Why does my iPhone display no contacts, but display the correct name when I dial a number?
I had the same problem. Contacts were showing up, for example, if someone called me or sent me a text and were therefore in my 'Recents', but did not show up in my contacts list either through the contacts app or through the phone contacts list itself (probably the same thing anyway!).

The solution that worked for me was to go into iCloud on my iPhone and set Contacts to 'off'.  This gave me the option to 'Keep on my iPhone' or 'Delete from My iPhone'. I chose to delete them. Once this had happened, I re-enabled Contacts and my contacts list was all synchronised back from iCloud correctly within a couple of minutes.