1) это похоже на стратегию, здесь в качестве стратегии ваш функционал для библиотеки, собственно для разных CMS можно иметь разный функционал, или тот же самый, подставляя ту или иную реализацию, в общем похоже на ваш случай, но информации мало
2) нужно поставлять все что необходимо чтобы библиотека работала, если это будет отдельным репозиторием, значит надо добавить зависимость в композер, однако слишком не надо усложнять, заранее нельзя все продумать, вы можете и в будущем вынести в отдельный репозиторий