Что лучше: сóрок пя́ток или пятóк сорóк? © Винни-Пух
unsigned int — это тип, поддерживающий положительные числа минимум до 65535 (а в современных реалиях — до 4 млрд)
long void — нет такого типа в Си++.
Да, я догадываюсь, вы хотите разницу между unsigned int и unsigned long. Unsigned long поддерживает не менее 4 млрд и в большинстве соглашений соответствует unsigned int (но иногда может давать 1,8·1019 — например, в Unix).
Если вы пишете под конкретный процессор и конкретную ОС — пишите как угодно.
Для простейшей кроссплатформенности x86/x64 Windows/Mac/Unix я вообще не рекомендую использовать long, используя int и long long. Для индексов в массиве (и прочего добра, чья длина зависит от длины процессора) используйте size_t и ptrdiff_t.
Для широкой кроссплатформенности лучше использовать (u)int32_t (если важна арифметика переполнений или точное количество байтов), (u)int_fast32_t, (u)int_least32_t (если важно, чтобы хранило не менее N байтов).