Наблюдаю множество разных способов именования классов из серии classes-class_item, class__item, -item.
Почему нельзя просто использовать слова и структуру классов, например .classes .class .item {bla-bla..};
Есть ли строгое правило именования классов, стили или что-то подобное?
Никто не заставляет вас использовать то или иное правило. Каждая команда разработчиков сама определяет с каким "правилом" наименования они работают. Если вы работаете один - выберите своё стиль, свое правило. И не нарушайте его.
Кроме этого, есть популярные "стандарты", например БЭМ (блок-элемент-модификатор). Ссылку вам уже кидали. Например, Яндекс использует немного модифицированный под себя БЭМ.