Je vais essayer de faire simple.
Ce que l'on appel "framework" est issue du constat qu'en développement on se retrouve souvent à ré-écrire les mêmes bouts de code, les mêmes routines, à faire des copié-collés d'un ancien site à un nouveau...etc.
Des développeurs malins et organisés ont alors eu l'idée d'écrire ce que l'on appel une librairie. C'est à dire un ensemble de fonctions couramment utilisées et réutilisées, rassemblées dans un même fichier que l'on peut par la suite réutiliser sur chaque nouveau projet pour répondre à des besoins récurants.
Au fil du temps et des projets, ces librairies devenant de plus en plus imposantes, il a fallut les structurer. Parfois on y ajoute même des portions entières destinée à fonctionnement primaire du site (afficher une page web demandée) et à l'organisation du code dans la librairie elle même (MVC, autoinclude...).
On en est arrivé à ce que l'on appel aujourd'hui un Framework. Les plus connus étant Zend, Symfony ou Codeigniter (en un peu plus simple).
Ces frameworks constituent des bases de développement, apportant une structure d'organisation du code (généralement MVC) et des classes de fonctionnalités couvrant à peu près tous les cas d'usage.
Pour ce qui est des CMS, pour Content Managment System, il s'agit comme con nom l'indique d'un outil de gestion du contenu. Une interface utilisateur qui va permettre de créer, éditer ou supprimer des contenus de son site.
Wordpress, Joomla, ou Drupal font parti des plus connus.
Pour la majorité des CMS (pour ne pas dire la totalité), ils intègrent dans leur moteur un framework. Wordpress dispose par exemple de son propre framework (aussi appelé API). Mais ce framework va souvent être limité aux fonctionnalités proposées par le CMS et il sera plus ou moins laborieux d'ajouter ou modifier des fonctionnalités du CMS.
C'est là qu'il faut bien choisir son CMS en fonction du besoin pour ne pas se retrouver limité par les capacités des API embarquées. (Drupal étant réputé pour être l'un des CMS les plus évolutifs, mais relativement complèxe à prendre en main techniquement).
Les "vrai" framework comme Zend ou Symfony son globalement illimités en terme de possibilité. D'autant plus si l'on considère l'importance des communautés de développeurs qui gravitent autour de ces solutions. On peut donc développer une solution répondant exactement à ces besoin mais il faudra créer soit même l'interface utilisateur pour arriver à ce qu'offre un CMS "out of the box".
En espérant avoir été assez clair pour t'éclairer