Custom Post Type is a specific post type (content type) added by a developer. So in addition to posts, theme now has a new type of post that has been named for example a “declaration” or a “portfolio” or an “article” or “movies”, whatever options are needed for the specific website.
This enhances WordPress usability and flexibility extending its qualifications as a capable CMS.
There is some confusion around this term “Custom Post Type”, since Post is a “Post Type” itself
Post is classified as a post type and this naming convention is a bit confusing.
Better description for “post type” would probably be “content type”. I’m assuming that this was unaccounted for since posts were the only possible “post type” until WordPress version 3 and the concept wasn’t future-proofed.
Taxonomy is simply a way to group/categorize content. (posts, custom post types, etc.) They come in handy especially when a content type has several meta data it can be sorted with.
Couple of most used taxonomies that are included in WordPress are “categories” and “tags”.
Developers can create “Custom Taxonomies” for WordPress themes. Custom taxonomies can be very powerful way to organize specific content where default categories and tags don’t really fit.
Slightly Different Beast
WordPress has built-in “post format” option in core, such as Aside, image etc. which can somewhat be considered as content types, but they are “taxonomies”.
“post formats” were added later in WordPress 3.1 and allows designers to customize them. They are intended more for design customization rather then grouping, a bit of a different approach from basic taxonomies. Post Formats have their suggested design based on their type and intended use.
Included supported post formats are
A theme developer has full flexibility and is not restricted on design choices for post formats and can add or exclude post formats and custom taxonomies from a theme.