A bridge table is used when a row in the fact table links to multiple rows in a dimension.
Bridging tables are a common concept in data modelling, not just dimensional modelling, and are used to store the 1-to-many or many-to-many relationships in a database. They exist because when you are linking two tables together in a many style relationship you need to store multiple combinations for how the tables link. That's impossible to store in a single row of data which is why you need an extra table between the two tables you're linking to store multiple rows.
A good example is the categorisation of a patient going to hospital. The patients episode in hospital will be categorised with a number of procedures (0 to many) representing the procedures performed on the patient. In that case you use the bridging table to link the single transaction representing the episode in hospital to the many different procedures that occurred. It may also be the case that a procedure is performed twice (e.g. given an IV) which is also accounted for with this.
The problem I've found with bridging tables is that the high cardinality from the bridging table can cause very poor query performance.
Why not just create a snowflake schema storing those extra layers of details?
It's a little different to snow flaking. Snow flakes are used to represent a hierarchy whereas a bridge table is used for a one to many relationship.