Constructor supports the concept of products with variations. For instance, if you're selling a particular kind of shirt that comes in 5 sizes and 10 colors, the shirt itself would be considered the product and each size/color combination would be a separate variation.
Products are not required to have variations -- you'll only need to use them if that's how you represent your product catalog. In addition, within a single index or dataset some products may have variations, and others may not.
Examples of metadata that are usually at the product level are things like brand, construction, department, and material.
Examples of metadata that are usually at the variation level are size, color, SKU, and price.