Hey @Edgar_Osorio o/
Relations are an option but in your case components might work as well (components are basically just a group of fields).
One key difference however (at least in Strapi v3) you cannot filter on components, so keep that in mind. With our upcoming Strapi v4, you will be able to filter on them (just not dynamic zones).
For relations my suggestion there would be to create content-types (collection types) for things like Color, Size, ect and setup oneWay or manyWay relations depending on your need. These basically show the relationship on one side (say a products collection type) but it won’t show the products on color, size, ect.
You could also use a manyToMany but I would advise caution using such a relation as it can have a performance problem as your collections start to grow. Ideally it comes down to what works for you, and the best way to figure out what you need is to play around building collections.