Product is a way to group variants. They hold information shared by all the variants that belong to it such as category, supplier, product type. Products do not hold any stock level information.
Variant holds concrete information like stock levels, moving average cost, etc. A variant is also the one associated with Sales Orders, Purchase Orders, and various stock transactions.