1. Закрытие тегов обязательно для очистки кармы. Не критично, браузеры понимают, но ваш идеал это чистая консоль и чистый лог
валидатора. header, body - так же нужно закрывать.
2. 4 пробела в табе используют в препроцессорах html, к примеру pug/jade - здесь это обязательно. В обычной верстке используйте так, как вам удобно. Чтобы проще было ориентироваться в своем коде. В конечном итоге на продакшен заливается минифицированный HTML/CSS/JS, для оптимизации скорости загрузки.
3. Этот вопрос больше подходит к самой методологии БЭМ. Когда у вас есть 1 основной блок с некими стандартными свойствами и вы используете к нему префикс классы для описания дополнительных свойств. Для того, чтобы сам блок можно было использовать неоднократно с разными свойствами. Для этого избегают глобальных свойств блока, если они могут изменяться. Соответственно неправильное понимание структуры и описания глобальных свойств блоку, вызывают !important, когда вы записываете префикс класс для блока, где нужно изменить уже записанное глобально свойство, к примеру фон блока.
4. Откажитесь в начале от Bootstrap сетки в пользу flex/grid. Для того чтобы в целом разобраться как работают стили. Учитесь в начале делать правильно и хорошо. Плохо делать вы и так умеете. К Bootstrap обычно обращаются в быстрой развертке проекта, и в основном для каких-то проектов где никто не будет париться на тему поддержки кода. Сделали и забыли.
5. - Статей о
БЭМ в интернете полно, основной принцип
БЭМ я описал в 3 пункте.