Как лучше реализовывать дополнительный функционал
Только через плагин, вручную менять можно файлы темы - functions.php и шаблоны. Если функционал невелик, можно написать его в functions.php.
Структура WP похожа на дерево, где каждая ветвь - фильтр или экшен. Плагины всего лишь добавляют ссылку на метод \ функцию в список действий для каждой ветви, которые движок должен будет выполнить. Сам по себе плагин, таким образом, не влияет на производительность - все зависит от того, какие именно функции должен будет выполнить WP. В среднем, если у вас штук 50 плагинов среднего размера, беспокоиться не о чем - скорее всего, вы даже не заметите замедления работы. 20-30 плагинов и меньше вообще ни о чем, как летало, так и будет летать. Плюс можно установить плагин кэширования для ускорения работы, а то и вовсе перейти на php7 и ускорить WP в 2 раза. На одном корпоративном сайте (~30 плагинов с весьма широким функционалом + самопис) так и сделано, открывается практически моментально.
Конечно, многое зависит от самого плагина и от того, насколько криво он написан - постоянно встречаю как отказ следовать рекомендациям в dev guide, так и просто адский код, на который без слез не взглянешь (хотя не исключено, что быстрый в плане производительности). Но этим и хорош WP: если какой-либо плагин слишком сильно влияет на работу системы,
почти всегда можно найти лучший аналог.
Подводя итог, в целом, можно ставить столько, сколько требуется, хотя исключительно для красоты и чистоты экосистемы сайта, для предотвращения возможных коллизий и багов из-за несовместимости я предпочитаю обходиться возможным минимумом.