Talking about branching, do you mean minor code [extensions] and applications or a version fork? Long term, I will be slowly developing both.
Git is so good at branching that you can use it for everything. Technically you're forced to. When you commit locally, you're committing to your own branch of the server. To share your work with others, you need to merge your local branch with the server's branch, or your co-workers branch directly.
Once you get comfortable with it, you can explicitly create new branches when you're working on a new feature, allowing you to quickly switch back to the last good/working version and do some hotfixes, before switching back to your feature branch.
Yes, it's also useful for 'tagging' particular versions, in case you have to go back and work on a patch for a released version of the product.
In subversion, branching is so horribly painful that no one does it, except when forced to
FWIW though, because Git sucks at large/binary files... all this branching goodness is only useful to your programmers. Putting art assets into Git is not a very good idea at the moment. Git is also so complicated that I'm not sure that I'd even want a non-programmer to try and use it
I've never used Perforce. Based on some quick looking it doesn't seem to provide significant benefit over Subversion. Is merging branches better or something?
Yes, and it can do a bunch of other stuff, e.g. something similar Git's submodules but actually good, and supports semi-decentralized models, where you can set up a local server to be a proxy of the remote server (something that's common with game dev and multiple offices).
Perforce is also compatible with Git! If you've got Git fanboi programmers on your team, they can actually use git to talk to the Perforce server.