¿Qué significa void * y cómo usarlo?

Hoy, cuando estaba leyendo el código de otros, vi algo comovoid *func(void* i);, Que hacevoid* significa aquí para el nombre de la función y para el tipo de variable, respectivamente?

Además, ¿cuándo necesitamos usar este tipo de puntero y cómo usarlo?