No te devuelve nada porque en un mismo registro idcolor no puede tener dos valores diferentes... tan simple como eso.
Código SQL:
Ver originalSELECT c.nombre, chc.color_idcolor
FROM carta AS c
LEFT JOIN carta_has_color chc ON chc.carta_idcarta=c.idcarta
WHERE chc.color_idcolor IN(1, 3);
ORDER BY c.nombre