A "Module" is a collection of Class folders and other settings, such as aliases, triggers, macros, etc.
You can think of a Module as a "super class".
A Package contains one or more Modules or Windows.
What makes a Module different from a class?
A Module can be "published", which allows the contents of the module to be used from other packages. Modules that are not published contain scripts that can only be used within the same package that contains the module.
A Module can also set which other packages are visible to the scripts within the Module. By default, all other packages are disabled for a module, so a module is completely self-contained.
In the Package Editor you can modify the list of enabled packages for each module.
Module vs Window
A Module is also very similar to a Window. In fact, there is a button in the Package Editor when viewing a Module to convert it to a Window. And when viewing a Window in the Package Editor there is a button to convert it back to a Module.
A Module is like a "non visible" Window. A Window can display buttons, MUD output, a status bar, and a command line. A Window can contain classes and other settings such as aliases, triggers, buttons, etc.
A Window is never "published". The settings within a Window cannot be used from other external packages.