It would be great if I could use different variation types for the
same product, then they can be used as different options for the same
product, instead of splitting the different options into two different
products (when they are the same product for 95% of the fields – same
title, description, images, etc.).
Speaking as someone who has built a Commerce store that sells ebooks and print books, there are many cases in which you may want to treat physical and digital products separately.
For example, you may want to charge shipping for the print copy, but you would not charge shipping for a digital copy.
I would create two different products, physical and digital.
And if you want to offer them together at a discount, you could create a third product that contains both.
If you have a lot of information that you want to share between them-- for example, the book title, description, and so on are the same-- then create a custom content type (for "Books I sell") and input all the information there, and then add an entity reference to that content type on the product.
The trick with Drupal Commerce is to figure out what things should be shared and what things should be different, and then create new entities/bundles (content types, product types, etc.) until you have a sensible setup.