bridge table joined table have both the keys equal to both the keys
If I understand the task correctly, then look for

SELECT mt.id, mt.name
FROM main_table AS mt
JOIN bridge_table AS bt ON bt.main_table_id = mt.id
JOIN other_table AS ot ON bt.other_table_id = ot.id
GROUP BY mt.id, mt.name
HAVING 2 = COUNT( DISTINCT CASE WHEN ot.name IN ('Other 1', 'Other 2') THEN ot.name END )
    OR 1 = COUNT( DISTINCT CASE WHEN ot.name IN ('Other 3')            THEN ot.name END ) 


To make it dynamic use

-- constant part
HAVING 1 = 0 
-- dynamic parts
    OR (cnt_1 = COUNT( DISTINCT CASE WHEN ot.name IN ( list_1 ) THEN ot.name END ))
    OR (cnt_2 = COUNT( DISTINCT CASE WHEN ot.name IN ( list_2 ) THEN ot.name END ))
-- ...


where list_N - values list, and cnt_N - unique values count in the list.