Custom node types are...well...custom.
There are a few different reasons a site architect might want to create a custom node type. Generally speaking, though, the most common reason is to keep similar data items lumped together and to ensure that data collection is consistent throughout that particular data object.
Other common reasons to create a custom node type include providing the ability to categorically separate the content using the Views module and to provide granular access control to selected data objects.
A custom node can be as simple or as complex as you, the architect, need to make them. Sometimes, they can get very complex.
In the following section, we'll focus on building a custom node type from scratch. In particular, we'll pay special attention to some added tools you can leverage to help keep your data in good shape as well as a large variety of different field types you have at your disposal.