The last term that we need is that of a release. Technically, the tools call a collection of packages a release. In this sense, a release is itself a package directory that contains an arbitrary number of packages as its subdirectories. By the intended use of the release, the tools separate them into two categories: official releases and working releases. These two types are almost identical at the lowest level of detail; the difference between them is mostly semantical.
Official releases are what the software librarian builds for a number of targets and then makes available to the rest of the developer community in one central location. Only the software librarian ever creates official releases, and they are subject to relatively strict control by the release tools.
Working releases are used by the developers when they work with packages. They can be as small as just one package, the working release being the package itself. Or it can be a working area directory that contains several packages checked out from the version management system. In any case, the working releases are treated in a very lax way by the release tools: none of the checking that is done to ensure that an official release makes sense is carried out in a working release.
A release, whether working or official one, always contains exactly one version of each included package. The other versions are kept in the version management system, and changing from one version of the package to another involves using the version management system's commands to do so.
Finally, in a release, each target can have separate working and installation directories; an official release not only can, but always does have them. This arrangement permits one to build the release on multiple targets concurrently: when the target-specific directories are used, the release tools take care not to write anything into the source directories to avoid interfering with the builds on the other targets.