Given that:
- A Collection contains Products, and Products "have" Looks.
- A Collection also "has" Looks
and making no assumptions, I see two big questions.
Can a Collection have (be assigned) Looks, but contain no Products that have been assigned those Looks?
If true (a Collection can have Looks but no Products with those Looks), then the "multiple tables" models everyone's posted so far would work: tables Collection, Product [FK to Collection], Looks, CollectionLooks, ProductLooks.
If false (a collection cannot have Looks unless at least one of it's Products has those Looks), then you'd have to toss the CollectionLooks table, giving you a simple hierarchical structure. Whenever you needed to determine a Collection's Looks, you'd have to "query through" from Collection to Products to ProductLooks. If performance were somehow a problem, you could denormalize and set up the CollectionLooks table, but keeping it accurate would be awkward at best.
Can a Collection contain Products with a given Look, but not itself be assigned that Look?
If true (Collection A contains Product P with Look Z, but Collection A itself does not have Look Z), then you'd have to use the multiple tables model, to keep what has which Looks straight.
If false (If Collection A contains Product P with Look Z, then Collection A must have Look Z), then the hierarchical model is again most approrpiate.