_beginthreadex(), c'est la même chose que CreateThread(), sauf que les fonctions d'initialisation de la CRT sont appelées au début du nouveau thread. La
doc de CreateThread elle-même déconseille CreateThread() au profit de _beginthreadex().
Le passage que tu as cité veut juste dire "ne pas oublier de fermer le handle": Il s'agit en réalité du même handle retourné par CreateThread() (casté en intptr_t), tu le fermes quand tu veux.
L'autre particularité, c'est que le type de retour de ta fonction doit être UINT au lieu de DWORD si tu veux que ça compile sans cast sur le pointeur de fonction.