At a very basic level. you'd need a profile, a database, and interaction between profiles. How you go about implementing the interaction portion is completely up to you. Obviously you'd need some sort of 'friend' concept, much like Facebook or any other networking site has. Then you'll need to allow interaction between friends, but not between strangers, so some sort of variable permission system would be necessary. In terms of interaction, beyond the basic 'add a friend' and 'message your friend' you should have something to keep the people interested...maybe photo sharing, video sharing, perhaps a 'points' system to encourage use of the more advanced features.
If you want to make it more complex you can allow people to design their own profile page. Since this is more of a stand-alone program, you can implement different widgets that would, for example, alert you when you have a 'friend' request, when you have new messages, when a video/picture/article/whatever mentions you, etc.