Это потому, что в вашем первом коде вы объявляете ДВА РАЗНЫХ выбора.
i) селектор классов (.right)
Стилизует ЛЮБОЙ элемент с прикрепленным классом 'right'.
ii) селектор потомков предков (.left .box_header)
Он стилизует любой элемент класса 'box_header', который ДОЛЖЕН БЫТЬ потомком присоединенного элемента класса 'left'.
В то время как во втором коде вы явно объявляете стили для
i) селектор потомков предков (.right .box_header)
Стилизует любой элемент класса 'box_header', который ДОЛЖЕН БЫТЬ потомком элемента класса 'right'.
А чтобы правильно объявить оба стиля, вы можете использовать следующий код
.right .box_header, .left .box_header {
/* Styles here*/
}
ii) селектор потомков предка (.left .box_header) ii)
Он стилизует любой элемент класса 'box_header', который ДОЛЖЕН БЫТЬ потомком элемента класса 'right'.
Вот почему оба кода имеют разный эффект.