Фреймворк - каркас. Дословный перевод который в общем хорошо отражает суть. Это какая-то структура которой придерживается приложение.
В основе любой системы лежит какой-то каркас. Структура, способ организации кода, хоть какой-то. Берете класс маршрутизации (который связывает запрос и код, который должен выполниться для обработки оного), класс для работы с базой, менеджер конфигураций... и как-то так выходит что у вас уже есть фреймворк.
В основе любой CMS есть фреймворк. Даже в том же wordpress. Это внутреннее API этой CMS на основе которого она построена.
Сложность и уровень фреймворка определяет уровень абстракции которые он вводит. Если приводить пример - Symfony2 и все та же отправка почты. Отправка почты сама по себе относительно жирная операция. То есть из 200 милисекунд обработки запроса, 100 из них может занимать отправка почты. То есть пользователь получит страницу позже. В Symfony2 реализован слой абстракций над запросами ответами и потому, есть полный контроль за всем потоком данных. Фреймворку не составляет труда узнать когда мы закончили обрабатывать основной запрос. Так же у PHP (в зависимости от SAPI) есть возможность сказать серверу что "мы закончили обрабатывать запрос, можно отдавать его пользователю" и делать что-то еще. В результате мы можем вместо отправки писемь, помещать из в очередь и отправлять только после того как запрос ушел пользователю получая улучшение отзывчивости системы.
Важно заметить, что код приложения вообще никак не отличается. Если у нас внезапно не будет хватать мощностей серверов и у нас узким местом будут как раз таки такие вот отложенные операции - можно безболезненно, без внесения изменений в бизнес логику и основной код приложения, добавлять все в очередь на другом серваке и там все обрабатывать. Таким образом мы можем вносить изменения в систему максимально быстро без ущерба качеству.
Если мне нужен блогообразный сайт, то я возьму вордпрес и перепишу и допишу недостающий функционал в итоге создание сайта на wp займет в разы меньше времени, чем на фреймворке.
А вот тут не всегда так. Как минимум потому, что время реализации функционала под wordpress на базе его внутреннего фреймворка может занять у вас значительно больше времени, чем написать все на популярном нормальном фреймворке, не оптимизированном на конкретное решение + дописать блог.