Почему все молчат о том, что второй вариант нарушает синтаксис CSS и не будет работать в принципе?!
Автор не упоминает препроцессоры, в тегах тоже нет. Значит речь идёт о нативном css, в котором только первый вариант и возможен.
НО, даже в первом варианте я категорически не рекомендую писать так, как вы написали. Гораздо лучше и удобнее будет так:
/*== Какой-то блок на странице */
.class-1 {
/* стили для экранов 767px и менее */
}
@media (max-width: 767px) {
.class-1 {
/* стили для экранов 767px и менее */
}
}
/*== Какой-то другой блок на странице */
.class-2 {
/* стили для экранов 767px и менее */
}
@media (max-width: 767px) {
.class-2 {
/* стили для экранов 767px и менее */
}
}
/*== И так далее… */
…
Код должен быть структурирован. Стили, описывающие отдельный селектор, всегда должны быть все вместе и рядом.
А если вы собираете стили препроцессором, то наверняка у вас описания всех селекторов будут раскиданы по отдельным файлам. Медиазапрос для селектора пишете в том же файле, где и основной стиль.
Повторю ещё раз: главное — структурированность кода! Пишете один раз, читаете и дорабатываете — сотни. Облегчайте себе будущие чтение и модификацию кода, который пишете.