Develop a module that adds a new content type with custom fields
Although its possible to do programatically, your easiest bet would be to use features.

This is how you would do it:


Manually create your content type
Manually add fields
Create a new feature and export the content type (and its fields)
Done!


Now if you install this feature is a fresh Drupal installation that content type and fields will be automatically added.