Сниппеты прописывают для определённого scope. Если вы не укажите его, то сниппет будет работать в любом scope. А с подсветкой всё должно быть нормально, я сейчас зашёл, у меня никаких тем не стоит, всё хорошо подсвечивается, php и html.
Вот сниппет например:
<snippet>
<content><![CDATA[
<script type="text/javascript" src="./js/${1}"></script>
]]></content>
<!-- Optional: Set a tabTrigger to define how to trigger the snippet -->
<tabTrigger>jslink</tabTrigger>
<!-- Optional: Set a scope to limit where the snippet will trigger -->
<scope>text.html(.basic)</scope>
</snippet>
В нём указан
scope для базовой разметки html. Только в файлах с расширением html будет срабатывать данный сниппет. Вот
тут указаны все scope для sublime. Либо сочитание ctrl+shift+alt+p и в строке состояния вам покажут scope файла в котором мы сейчас находитесь.
Если вам нужен сниппет и для html и для php,то можете смело не указывать scope( будет срабатывать везде) или же прописать через запятую
<scope>text.html(.basic), source.c++</scope>
На счёт темы... ставьте php синтаксис, так и php и html подсвечиваются, нежели просто синтаксис html.