Do not forget that a tag and a branch are essentially the same thing in SVN: both are the result of svn copy
The trick is, since a tag represents a snapshot, it should be an "immutable" one, in that you should not make any modification on it.
What that snapshot (tag) represents is entirely up to you. it can be:
- a stable state in the development
- a mark just before a complicated merge (in order to go back to it if the merge is too complex to be resolved quickly)
- a release or a patch
- and so on...