To understand a catalog, we will begin by understanding the individual pieces.
Categories are useful to present, sort, and further segment products in an organized way. Categories can have parent categories which enables the creation of a hierarchical structure of arbitrary depth.
When a category is created it must be defined as part of a catalog. There is a direct parent/child relationship between any category and exactly one catalog.
Products don't really live inside categories or catalogs in the same way that categories live inside a catalog. They exist independent of both those entities but can be assigned to either, which allows the API to present the product as part of them (at least to the user).
Putting it all together we can say a catalog is a container for category hierarchies and all product assignments to either the catalog directly or the categories within it.
Next, we'll discuss see the different ways that we can make visible all or part of the catalog.