Branching could be useful in different situations, some more relevant than others, but on big factories with a team with several developers, it could be very useful.
A situation that occurs frequently is when we receive a change request which requires changes on core entities, this will break the environment , and will affect other developers that are working on a different feature, but are prevented of testing/developing without pain since the environment is broken.
So it would be great of having an way of creating a branching per pta of a solution, were the developer could make the change that will break the environment isolated, finishes the development, could test it isolated again (remeber that i've mentioned a branch of the solution), if everything is ok, perform the merge of the branches, create a new solution and schedule the publish.
Im mentioning PTA was a way of doing it, it could be by branch, if it was possible to work on different espaces on a context of a branch
If i was a smoker i would quit smoking with this feature :)