TYPO3 v9 has reached its end-of-life September 30th, 2021 and is not maintained by the community anymore. Looking for a stable version? Use the version switch on the top left.
You can order Extended Long Term Support (ELTS) here: TYPO3 ELTS.
Following are some good practices for creating custom content element types and plugins and for customizing content elements for usage in the backend.
Use a sitepackage extension to maintain your site customization (such as backend layouts, custom content elements etc.)
How you structure your extensions depends a little on the use case and if they will be resused in several projects and / or made public. If you create one extension for every custom content element, you may want to think about whether they might be merged into one or more extensions.
Do not use deprecated functionality. Read the Core Changelog to check for deprecations and breaking changes between TYPO3 versions.
Some naming conventions are described in the chapter Naming Conventions.
Read (or skim) the Coding Guidelines.
Make it easier for your editors by hiding the following by configuration
content elements that should not be used in the "Content Element Wizard"
fields that should not be filled out in the backend forms.