A trunk, in the context of software development, is the base code from which a branch is taken to be worked with. Other terms for trunk in this context include baseline, mainline and master.
A branch is essentially a copy of the original – a branch taken from the trunk – so it can be developed while the original code remains stable. The branch is developed and its changes may be merged back into the trunk, depending on the purpose.
In trunk-based development (TBD), all developers commit to a single shared branch for version control. That branch is then known as the trunk and subsequent branches are taken for releases.