Each of these functionality is available as an isolated java project, which has it’s own data model (if required), its own spring configurations ans properties etc. This grouping of similar functionality into one java project is termed as extension. Below is a snapshot for commerceservices extension from hybris.
An extension may or may not have a web interface. It may depend on other extensions to fulfill it’s purpose. This information is defined in extensioninfo.xml
The data model of extension is defined in <extension-name>-items.xml file.
The spring configuration for an extension is defined in <extension-name>-springs.xml. It has all bean definitions, dependency injections etc.
Each active extension of your hybris project must find a place in localextension.xml