Subversion and GIT allow multiple developers to work on the same project by committing/pushing and retrieving their changes to/from the server.
Branching allows developers to isolate code and work independently without disturbing the main development line (the 'trunk' on SVN, the 'master' on GIT).
A Branch is a copy of the project taken at a specific point in time, for example when preparing a new release for promotion to another environment. The copy can be taken from the main development line ('trunk' or 'master'), from another Branch or from a Tag. A Branch is editable and can therefore "fork" from the original source. In this situation, reconciliation between the original source (branch or trunk) and the forked Branch must be done manually.
Tagging allows developers to mark a particular revision as important in the development process.
A Tag is similar to a Branch, but is a read-only snapshot of a Trunk/Master or Branch. Once created it cannot be edited in any way. However it is possible to create a new Branch (which is editable) from a Tag.
Development teams are expected to define the workflow they want to use. For more information on the differences between SVN and Git, see this GitHub documentation article.
The following diagram shows the generic process of SVN branching and tagging.
The following diagram shows the generic process of GIT branching and tagging.
For more information on Git flows, see this GitHub visual tutorial.