Trunk is a main (head) line of development. That's where you share your project and do initial commit. Branches are the additional lines of development. Used when branching for different versions from one initial is needed or when each developer has his own development line and plan. Tags are a kind of specific labels for a set of files each with its own revision number. Used to track the important events if project's life cycle.