WordPress ships with posts and pages. A custom post type is an additional content type you register yourself, with its own admin menu, its own URL structure and its own set of fields.
When you actually need one
The test is whether the content has a shape of its own. Tutorials that all need a duration and a topic are a custom post type. A one-off About page is not, that is just a page. Using categories on regular posts to fake a content type works until you need fields that only apply to half of them.
How they get created
Registering a post type is a function call in PHP, but plugins such as ACF do it through an admin screen and store the configuration in the database. Pick one method and stay with it. Splitting the definition between PHP and a plugin UI leads to conflicting slugs and labels that are unpleasant to untangle.
Archives and single views
Each post type can have an archive, a listing page at its own URL, and a single template for individual entries. Neither exists automatically in a useful form; you build them with your theme or your page builder.