Component Object Model, o mejor conocido por su acrónimo 
COM, es una interfáz de estándar binario (o lenguaje neutro) que sirve para posibilitar la comunicación entre procesos, por ponerte un ejemplo: la interoperabilidad entre 
Microsoft Office y tu proceso -puedes manejar el proceso de 
Office mediante la utilización de sus componentes 
COM desde tu proceso, dicho de otro modo 
COM sirve como una técnica 
IPC (
Inter-process communication).
Lo mencionado arriba se consigue mediante el propósito fundamental de 
COM , poder implementar objetos (que etán definidos en los componentes 
COM) e instanciarlos de forma dinámica en entornos de programación distintos al que fueron creados, por ejemplo se puede conectar a un componente 
COM desde un lenguaje soportado por la plataforma 
.NET (
VB.NET, 
C#, etc), o desde otros lenguajes como 
C++.
Otra cosa que me gustaría aclararte es que 
COM y 
OLE en absoluto son lo mismo, simplemente 
COM es la base de 
OLE, o dicho de otro modo 
OLE se diseñó a partir de 
COM.
...¿Un libro dices?, en realidad no necesitas ninguno puesto que 
COM es una tecnología desarrollada por 
Microsoft, y si algo podemos admirar de 
Microsoft es que es lider, amo y señor todo poderoso en ofrecernos una basta cantidad de guías y referencias online para programadores, todo tipo de documentación con todo lo que necesitas saber y más, vaya, así que en mi humilde opinión podrías empezar a leer por aquí:
Guías y ejemplos para C++:No encontré nada para 
C, espero que te sirva igual con esos links para 
C++.
PD: 
Debes formular las preguntas de programación en el subforo de programación apropiado, no en la sección de Windows...Saludos!