Modules are the core of Magento. Every action on the site, frontend or backend, goes through a module. Modules 
act as containers for one or more of the following: settings, database schemas, rendering objects, utility helpers, 
data models, or action controllers. 
A module can be made of all six of these things, or just one.

Modules are defined as being on or off in an XML configuration system located in:
Each module can specify its own settings in an XML file as well, located under the module's etc/ directory.


Since everything in Magento is a module, and modules have self-contained configuration and database settings, this 
allows you, as a developer, to extend Magento exactly as the core system is built.

Modules are located in one of three code pools. The code pools are: core, local, and community. All of the modules 
distributed with the base Magento are in the core code pool. All of the custom modules that you develop can be 
installed in the local code pool. The community pool was originally designed for installed third-party modules, but 
this idea might be phased out, as you can simply install any module in local as well as community.

The package serves no purpose other than to allow for consistent naming of classes. All Magento modules are part 
of the Mage package. Thus, all Magento class names begin with Mage_. It is an acceptable practice to create a 
new package for your custom modules that has the name of your company or organization instead of Mage. There is 
no functional detriment when not using Mage as your package.