La diferencia clave es la "inversión de control".
Con una librería (como React), tú llamas al código de la librería. Tienes el control del flujo de tu aplicación y decides cuándo y dónde usar una función de la librería.
Con un framework (como Angular), el framework llama a tu código. Él te da un esqueleto, unas reglas y unos sitios específicos donde tú "rellenas los huecos" con tu lógica. El framework tiene el control del flujo.
La analogía: una librería es como ir a IKEA y comprar una estantería (la usas cuando quieres). Un framework es como construir una casa prefabricada (tienes que poner tus muebles donde te dejan los huecos).