When customizing a Model-Driven App all changes should be in a solution. A solution holds all customization being carried out by the maker, whether it be any custom entities, processes, business rules, or modifications to existing OOTB entities.
Solutions can be used to move these customizations between environments, eg. from development à testing à production.
Solutions can also be used to deploy changes in a managed (testing, production) and unmanaged (development) environment. Managed solutions can be thought of in simple terms and an installer can be installed and uninstalled.
Differences between Managed and Unmanaged solutions:
Figure: Solution show all customizations, make it very easy to move changes between environments