In SVN a tag and branch are really similar.
Tag = a defined slice in time, usually used for releases
Branch = also a defined slice in time that development can continue on, usually used for major version like 1.0, 1.5, 2.0, etc, then when you release you tag the branch. This allows you to continue to support a production release while moving forward with breaking changes in the trunk
Trunk = development work space, this is where all development should happen, and then changes merged back from branch releases.