The concepts behind TYPO3 extensions 

The TYPO3 CMS is built entirely out of extensions. The Core consists of "system extensions" — some mandatory, others optional.

Thousands of extensions are available in the TYPO3 Extension Repository (TER), and many more are hosted on platforms like GitHub.

And for Composer-based setups, TYPO3 can pull in any PHP packages from Packagist.

Extensions allow TYPO3 to be extended in unlimited directions due to the robust TYPO3 Extension API - and without compromising backward compatibility.

System extensions 

System extensions deliver TYPO3 core functionality. They have the Composer type typo3-cms-framework.

In classic mode installations you can find them in the typo3/sysext directory.

These are the most important ones:

typo3/cms-core
Defines essential database tables (e.g., BE users, groups, pages, sys_*) and default global configuration (core/Configuration/DefaultConfiguration.php). It also provides a large set of PHP base classes.
typo3/cms-backend
Powers the TYPO3 backend interface including controllers, PHP classes, and the Fluid templates needed to operate the admin environment.
typo3/cms-frontend
Handles frontend rendering. Key components include content object classes in frontend/Classes/ContentObject, which provide output for content types.
typo3/cms-extbase
TYPO3’s MVC framework. Provides structure for extensions. Works alongside Fluid, which handles the "View" layer.
typo3/cms-fluid
A standalone templating engine and the "View" in MVC. This extension includes templating logic and many ViewHelpers (fluid/Classes/ViewHelpers) for building flexible and reusable templates.
typo3/cms-install
Contains the Install Tool, which is used for system setup, upgrades, and configuration.

Scope of extensions: System, third-party or custom 

Extension files are installed in thevendor/ folder by Composer. See also vendor/.

In Classic mode installations they are found in typo3/sysext/ (system extensions) or typo3conf/ext/ (third-party and custom extensions).

Third-party and custom extensions 

Third-party and custom extensions must have Composer type typo3-cms-extension:

EXT:my_extension/composer.json`
{
    "name": "myvendor/my-extension",
    "type": "typo3-cms-extension",
    "...": "..."
}
Copied!

The extension will be installed in the vendor/ directory by Composer. Custom extensions like sitepackages or extensions planned to be used in just one project can be kept under version control in a directory like packages/. They are then symlinked into vendor/ by Composer.

In Classic mode installations third-party extensions are installed into typo3conf/ext/. Custom extensions can be kept in a directory outside of the project root and symlinked into typo3conf/ext/ or manually inserted in the directory.

System extensions 

System extensions have Composer type typo3-cms-framework:

EXT:core/composer.json`
{
    "name": "typo3/cms-core",
    "type": "typo3-cms-framework",
    "...": "..."
}
Copied!

Composer installs TYPO3 extensions (including system extensions) in the vendor/ directory.

In Classic mode installations they are installed in typo3/sysext/.