NOTE: checkouts and repositories do not exist yet
In the simplist of terms, a branch is the place that [:Revision:revision]s go to when [:Commit:commit] is run. The revisions stored in a branch are ordered according to their introduction.
Branches may or may not come with a [:WorkingTree:working tree]. [:Checkout:Checkout]s and [:StandaloneBranch:Standalone branches] both provide you with working tree to hack on your code with. Technically a checkout is not a branch because it does not contain all of the ordered revisions that make a branch a branch.
Another type of branch is a [:RepositoryBranch:Repository branch]. These types of branches are tucked away inside of a repository and should not be hacked on directly. Instead, either branch from them, or make a checkout for them that you can hack.