Extensions are installable packages which give CiviCRM new functionality, and this directory provides a centralized list of extensions which the CiviCRM community has created.
Create custom searches with optional the possibility to export the results
Create an API to fetch data. This is quite useful if you have external systems which need data from CiviCRM.
... and developers can enhance the outputs of the data processor so that much more is possible, even things we haven't thought of yet.
While you can set error_reporting in php, there are situations where the E_NOTICES and E_WARNINGS are "hidden" by popup forms or ajax calls and so you never see them unless you check the CMS logs while developing. Some CMS's may not even log them.
Contacts will only be able to see groups for which they are administrators and the contacts in those groups.