To work successfully with branches, your development group should adhere to these principles:
This does not mean minimizing the absolute number of branches in the project, just the number being worked on at any given time.
With those principles in mind, let's take a look at a typical branch development scenario. We'll have jrandom on the trunk and qsmith on the branch, but note that there could just as well be multiple developers on the trunk and/or on the branch. Regular development along either line can involve any number of people; however, the tagging and merging are best done by one person on each side, as you'll see.