Respecto al concepto handle en C se afirma lo siguiente:

The term handle is sometimes confused with a pointer. A handle is a reference to a system resource. Access to the resource is provided through the handle. However, the handle generally does not provide direct access to the resource. In contrast, a pointer contains the resource’s address.

Como ejemplo dentro de un archivo de encabezado hay:

/*! Device Handle */
typedef void * DEV_HANDLE;

/*! Buffer Handle */
typedef void * BUFFER_HANDLE;

Y, por ejemplo, se usa en una DLL como:

int CDECL functionName(DEV_HANDLE hDevice, BUFFER_HANDLE hBuffer );

¿Cuál es el propósito de estos mangos? ¿Por qué no usar solo punteros en su lugar?

no answer