использоваться без некоторых своих элементов,
Конечно, блок может быть вообще без элементов
ИЛИ с изменённой последовательностью этих самых элементов
Конечно можно, а если невозможно изменить что-либо не нарушив стандартное поведение, применяется модификатор или микс.
например вложенный блок в одном месте является так же и элементом (микс)
Да, любой блок может быть миксом другого блока или элемента.
В данном примере я использовал названия блоков "header-top" и "header-bottom", является ли это ошибкой?
Тут конечно нужно изучать в контексте, но header-1 и header-2 будет значительно практичнее. Если поменять местами header-top и header-bottom, что по сути должно быть возможным хотя бы в теории, то из-за таких названий будет полный диссонанс, в то время как абстрактные имена header-1 и header-2 ни к чему нас не обязывают и ни чем не ограничивают.
Еще можно использовать префикс например t-header b-header, интуитивно мы можем себе представить что это top и bottom, но по факту это всего лишь абстрактное название header