Unless you've developed a one-off application, you're more than likely going to need to need to branch. In this post, I'll point you to some great documentation on how to decide on what your branching strategy should be. I will leave it to you to decide what meets your needs. In my last post I mentioned how I typically structure my source code repository no matter whether I use TFS/Subversion/etc and I'll assume you're using a structure similar to that one.

My one recommendation is to branch judiciously, meaning branch only when needed. Branching provides isolation at the cost of maintenance and merging. Depending on how long you go between merges, this can become a dreadful experience. I would suggest to merge at least once a week so that you feel the pain little by little instead of at the very end.

The VSTS Rangers team has some good advice in CodePlex http://tfsbranchingguideii.codeplex.com/ that has been divided into Basic, Standard, and Advanced branching plans. Here's a quick rundown, but I will not cover everything the guide goes through, so I highly recommend the various guides available at codeplex.

Basic Plan

Gives you the ability to support concurrent development (whether its by team/feature) having a stable main branch and a release branch for shipping bug fixes. Useful if you only do version releases.

Standard Plan

Adds to the basic plan the ability to also support for service packs.

- These service pack branches would go in the maintenance folder from the structure I use and older releases would go in the safekeeping folder.

Advanced Plan

Adds to the basic and standard plan by adding support for having hot fixes as a formal type of release.

- These hot fix branches would also go in the maintenance folder and older releases would go in the safekeeping folder.

When you check out the CodePlex project, make sure you download the drawings zip file it has a great poster that provides some walkthroughs.