In the simplest of terms, a branch is the record of all the commits that have been done. Every working tree has a branch, but it may be in a different location. The actual revisions produced by the commits are stored in a repository, which is sometimes shared with other branches.
A frequent activity done by users within the working tree of a branch is to merge another branch. In this way users can share changes between two branches -- even if the branch is run by someone else.
Bazaar's default behavior is to put the repository, branch, and working tree all in the same place. This combination is called a standalone tree. If there is no tree, it is called a standalone branch. If the repository is shared with other branches, it is called a repository branch. A working tree in a different location from its branch is called a checkout.