How to create “custom page types” with different custom fields in them?

You can use either a custom taxonomy or a custom field for page types. By the nature of custom taxonomy, I think it’s a better solution than custom field.

To create custom fields for each page type, you can use a plugin like Meta Box along with Conditional Logic or Include Exclude extension. They allow you to define custom fields for posts/pages under some conditions such as by taxonomy terms, categories, page templates, or by other custom fields’ values.

Regarding creating tabs for page types, I guess it’s a custom code. WordPress doesn’t support it by default. Maybe you can look at Elementor’s code to see how they do that.