A Lisp library is a single loadable file containing Lisp code. It may be in source or byte-compiled form. A Lisp package is a set of one or more libraries, usually related to each other in some way, bundled with administrative information for convenient distribution.
There are two main flavors of packages.
XEmacs Lisp packages are distributed in two ways. Binary packages are used by system administrators and end users. They are packaged in a form convenient for direct installation into an XEmacs package hierarchy. Source packages are for developers and include all files necessary for rebuilding byte-compiled lisp and creating tarballs for distribution or installation. This is all of the package author's source code plus all of the files necessary to build distribution tarballs (Unix Tar format files, gzipped for space savings). (Occasionally sources that are not relevant to XEmacs are usually renamed to file.upstream.)
Currently, source packages are only available via CVS. See http://www.xemacs.org/Develop/cvsaccess.html for details.
The package distributions are also split according to major features required in XEmacs to support them. At present there are generic packages, which can be loaded by any XEmacs, and Mule packages, which require Mule support or they will cause errors when loaded. Note that there is no guarantee that a generic package will have any useful functionality in a minimally configured XEmacs. As long as any XEmacs can successfully load the package's libraries (perhaps given other required Lisp libraries), it will be classified as generic. At the present time only Mule packages need be treated specially, and even those only if they contain multibyte characters.