Зачем делают label для input?
К примеру:
Запомнить меня
Зачем это делать? И стиль пишется для .i-checks i почему-то. Разве нельзя стиль сразу для input сделать? И зачем нужны теги i? В них все равно ничего нет, но стиль присваивается не просто .i-checks а именно тегу i в нем.
Вот код:
https://jsfiddle.net/ryqknqvf/
Это подсказка - чтобы в момент заполнения поля, оставалось его название, мало ли пользователь забудет, что именно он заполняет, если форма заполнена неверно, прийдется кликать на каждое поле и удалять написанное, чтобы узнать, что именно было заполнено неправильно. В случае с чекбоксами и радио-кнопками – label незаменим, т. к. попасть по маленькой кнопочке многим довольно проблематично, а так кликнув на привязанный label выберется и сам input.
Тег i в вашем примере, скорее всего, вставляет какую-то иконку – так лучше не делать и, вообще избегать пустых тегов, а вставлять иконки в :before/:after label-а (кстати, еще один огромный плюс использования label – форму можно стилизовать, как душе угодно, в то время, как сами input проще совсем спрятать, чем пытаться их видоизменить).
Так наверняка input:checked + i {}, так что на label иконку не повесишь
Конкретно по вопросу: тег i здесь ни к селу, ни к городу.
label нужен, чтобы по нажатию на текст чекать чекбоксы. Иногда label может быть вообще в другой части страницы, а чекбокс скрыт, вместо него можно выводить картинку, которая меняется на :checked, так как сами чекбоксы не стилизуются. i — это просто "некий тег", вместо него может быть и span, используется для выделения части текста, это нужно или для стилей или для скриптов, по ситуации. Если внутри ничего нет, то там может быть какой-нибудь before в стилях или background.
Если делаешь сайт один, делай как хочешь. Если работаешь в команде, будь добр соответствовать соглашениям об оформлении кода.