Префиксы - довольно тонкая условность. Дело в том, что все блоки в БЭМ можно разделить в категории "по смыслу".
- Одни из блоков служат контейнерами для других, в свою очередь даже не имея элементов.
- Другие блоки являются частью js-плагинов.
- Третьи вообще нужны для различных фиксов
- Четвертые ничем не примечательны
- ...
Вот для деления на такие логические группы используют префиксы. Нет каких-либо стандартов на эту тему, но как-то так прижилось использовать эти
b (обычный, ничем не примечательный блок)
,
g (блок без элементов)
,
js (блок - часть js#плагина)
.
Лично я использую префиксы довольно редко. Чтобы связать по смыслу несколько блоков, не более.
.header-top
.header-center
.header-bottom
.js-plugin1
.js-plugin2
.special-block-head
.special-block-body
.special-block-footer