If the built-in templates, content types, Web Parts, pages, features, service application and so on, are not adequate for your organization or system, then the SharePoint platform offers many extensibility points and APIs that you can use to develop your own. In SharePoint 2013, there are two primary models for extending the platform: the SharePoint Solutions model and the new SharePoint (Cloud) Apps model. The major difference between these models is that SharePoint solutions run in a SharePoint process and leverage SOM, while SharePoint Apps run in a separate, isolated process, which can be hosted in SharePoint, in Azure, or wherever the architect wants, and use one of the SharePoint client APIs; for example, CSOM, JSOM, or REST.
The SharePoint Apps model is very convenient for building small SharePoint applications and widgets, but any significant customizations of SharePoint will require a SharePoint solution, including building custom site or list templates...