COM / OLE / ActiveX / IDispatch confusion

No puedo entender las diferencias entre estos términos.

¿Son sinónimos COM y ActiveX?

Es el objeto ActiveX solo un objeto COM que expone IDispatch?

Muchas páginas antiguas de MSDN mencionan IDispatch sin ningún contexto COM. ¿Tiene una historia separada y se introdujo bajo el 'paraguas' de COM más adelante en su ciclo de vida?

¿Dónde encaja OLE? ¿Es su presencia (considerable) en los nombres de MFC y MSDN en general, todo simplemente heredado?

Wikipedia da una idea, pero no mucho. No pude encontrar una referencia más profunda.

Respuestas a la pregunta(3)

Su respuesta a la pregunta