For a social networking site based on PHP, you should consider Elgg. Building a social networking site from scratch would be a huge project. No developer can afford to take on that much work on a speculative basis.
I really like the idea. You could maybe use http://elgg.org/
I played with elgg briefly -- seemed promising. You could host it yourself or use one of the hosting providers they suggest.
I believe there are other options as well, but I'm not as familiar with them.
This has some fairly well organized source, and encompases a lot of things - ie it has an api, rss and comments everywhere, lots of bells and whistles, user accounts, flexible levels of privacy etc with groups, image and file uploads, a plugin system, a themeing system etc.
If you got your head around it you'd have seen good examples of most things you'd probably want to build in a first project.
I also suspect wordpress would be pretty well organized code. But have never looked. But since a blog is usually a pretty sensible first project (can be as simple or as complex as you like, something you can actually use), I'd have a look at Wordpress source too.
CRUCIAL CAVEAT -> I'm not a php dev. But I had to muck around with elgg source a bunch once, hacking some changes in, and I heard from some people who do know that it is well put together, and it certainly delivers quite a lot in a single install.
Good luck.
For a social networking site I would use the open source web application Elgg which uses PHP and MySQL.
Drupal is good if you want to create web sites with a minimum of coding except for CSS.
I would recommend Drupal over WordPress, but WordPress seems to be more popular with web designers. I think there may be too much competition in the WordPress ecosystem. You could probably do better specializing in some obscure open source web application that fewer people design for, like Elgg.
As for me, I'm betting the company on Drupal. Today I learned how to use the Services module to create a REST API for my Drupal sites. This will make it possible to customize the site without touching a module or the core. I can just use jQuery and web service calls to work around any limitations.