TFS 2012 is looking pretty better compared to the past, but it's not official yet. I find the legacy TFS source control lacking. They took Visual Source Safe and tried to polish that turd with a belt sander. It causes all kinds of grief. It looks like TFS 2012 finally got all the legacy cruft out. I've only tried using the team stuff in 2012, and I see they still have to implement some very important things for task planning. Most of those features won't be very useful without also using Visual Studio.
At home for my personal stuff, I have started to use git. There is a stupid learning curve on it, and the hard-core people don't help. They'll smack you over the face with the git manual, as if it really tells anything about how to really understand how it works. Generally they just go through the commands and you have to figure out the smart way to use them.
I would recommend this as a primer:
http://git-scm.com/book
From there I finally came to an understanding of what they are trying to accomplished with distributed source control systems, and git in particular. Generally it goes something like this:
1. You clone the repository to your machine.
2. You have something you want to do, so you make a branch.
3. You start filling in that branch, committing to it from time to time.
4. Something else comes up that you want to try, but not with the branch you're working on since you're halfway through blowing up everything architecturally. So you make another branch off the original.
5. You start filling in that new branch.
6. Repeat....
7. Eventually you want to share your mayhem with others, so you start to merge the branches together into a cogent base. You can undo these merges if they come out like crap.
8. Eventually you merge back to the main branch.
At points here, since you have a clone of the repository, you can have a buddy check out from your own clone if there's a branch the two of you want to muck with independently of everybody else.