How it differs from a separate product
Variants share an identity family and most of their facts; separate products do not. The difference matters because a model will happily carry a fact from one variant to another if nothing on the page says where the boundary is.
What makes a variant unambiguous
Its own GTIN, the varying attribute stated in the HTML, and — where it has its own URL — a canonical that says which variant this page is.
Example
A hammock sold in two lengths on one page, with one GTIN in the structured data, invites an answer that gives the longer length and the shorter one's weight.