Б>Когда имеется несколько реализация — понятно, интерфейс обычно выделяют. Б>Но если реализация только одна, для каких классов выделяете интерфейсы, а для каких нет?
Выделяется при любом взаимодействии двух и более классов, ибо тесты.
Б>P.S. Возможно, ответ сильно зависит от используемого языка. По возможности, укажите используемый язык.