My wife recently made the switch from a clunky old Android phone to a spiffy new iPhone 4S. When she asked if all her contacts could be moved from the former to the latter, I confidently replied, "Sure, no problem!" After all, Android phones sync with Google Contacts, and iTunes has the ability to do likewise. Easy-peasy, right?
After making sure that the Android phone had done one final Contacts sync, I fired up iTunes, plugged in the iPhone, and clicked it in the navbar on the left. Then I clicked the Info tab and focused my efforts on the Sync Contacts section.
Specifically, I enabled the option, then clicked the contacts selector (a pull-down menu) and chose Google Contacts. iTunes asked me for my wife's account info, which I provided, and then I just sat back while the software worked its syncing magic.
Just one problem: not all her contacts landed on her iPhone. Many did, but a good chunk of them were missing. I signed into Google proper, and sure enough, there they were. So what was causing the disconnect?
I won't keep you in suspense. iTunes syncs only those contacts in Google's My Contacts group. If you have contacts in other groups, as my wife did, those won't make it through to the iPhone.
Fortunately, it's an easy problem to remedy. While viewing your Google Contacts (via Gmail), click a group to select it, click the uppermost checkbox to select all the contacts in that group, and then click the Groups button. Choose My Contacts and you're done. (That doesn't make any actual changes to any of your contacts, it merely adds them to the My Contacts group.) Repeat the process with any other groups you might have.
Now sync your iDevice again and you should find all your contacts present and accounted for.