Most eCommerce platforms support offering multiple product variations on a single product display page. These variations are often differentiated by named attributes, e.g. size, color, etc. In Drupal Commerce, we support all of this via Product and ProductVariation entities paired with ProductAttribute and ProductAttributeValue entities that define those differentiating attributes on each variation. Furthermore, you can fully customize your product data model by adding fields of any Drupal field type to your products and variations.
Unlike many other platforms, we support virtually unlimited variations and attributes for any product. It may seem like a small thing, but consider that Shopify, one of the largest eCommerce platforms in the world, only lets you add 3 such attributes to your products, only supports entering options via free-tagging, and offers no way to change how attributes are rendered on the Add to Cart form. This is all elementary in Drupal Commerce thanks to the strengths of Drupal’s data model.