What is the distinction between bundle and package?

A bundle is a collection of tightly coupled, dynamically loadable classes, jars, and configuration files that specifically indicate their external dependencies (if any). A Java archive file containing Java code, resources, and a manifest that identifies the bundle and its dependencies is known as an OSGi bundle. A bundle is the smallest unit of modularization. Along with out-of-the-box bundles, we can easily install our own custom bundles in AEM.

A Package is a zip file that contains content in the form of a file-system serialisation (also termed as "vault" serialisation) that displays content from the repository as a simple-to-use-and- modify the representation of the filesystem. Packages can contain content as well as project-related information.