Since you ask, here's the answer:
2 things:
1. Pecking order. Kohli himself talked about it (check cricinfo article). India follows the pecking order always. In WC 2011, Bhajji was clearly an inferior spinner to Ashwin but still he played all the games while Ashwin was dropped (inspite of doing well in the games he got). Same way, later on there were stages where Ashwin was saved due to pecking order before he improved. Dhawan has a higher pecking order right now cos India gives lots of chances and then discards. Once you get discarded, coming back is super hard.
2. India and Pakistan have different strengths and weaknesses. India's strength is batting (atleast on paper though output has not been upto the mark). Indian openers are more accomplished so Rahul finds it hard to make it into the team. Plus he doesn't have flawless start to overpower Dhawan so he has to sit out.
As for best batsman, Rahul is not the best batsman (nor is he considered better than all Pak batsman). However he has very high potential. Steyn 2 years back said Rahul one day would turn out to be very good cos he had serious quality. Of course, he has quite a way to go but Rahul is the kind of guy who can open innings and score 100s on all kinds of tracks be it spin, swing, seam (even green tracks which he gets at domestic at times).
Still long way to go but potential is there.