I always explain variant using the example of T-shirts. You have a Red T-shirt available in sizes of S, M, L and XL. By setting up one Red T-shirt item, you then can add variants for the sizes. You can price by variant, all transactions will track variant, even descriptions can change by variant, stockkeeping units can be setup by variant.
The largest downside is that BC does not require the user to enter a variant. So in my example of the Red T-shirt, if I forget to choose S, M, L or XL, BC will process the transaction without error and now my inventory by size is off.
Some users like this feature as they use variant to identify quality holds or defective items.