Esta es una vieja pregunta, pero la respuesta actual realmente no explica para qué los usarías.
Se trata de ahorrar espacio. Y con los atributos de vértice, menos espacio puede significar un mayor rendimiento (si está vinculado a la transferencia de vértice).
Los colores generalmente no necesitan más de 8 bits por componente. A veces necesitas 16 bits, si es un valor de luz HDR o algo así. Pero para las características de la superficie (que es lo que son la mayoría de los atributos de vértice), 8 bits está bien. Por lo tanto, los bytes normalizados sin signo son un buen formato de vértice.
Las coordenadas de textura no necesitan 32 bits de precisión de punto flotante. Un valor de 16 bits de [0, 1] es suficiente. Por lo tanto, los cortos sin signo normalizados son un formato de vértice razonable.
Las normales nunca necesitan 32 bits de precisión. Son direcciones. Los bytes normalizados con signo de 8 bits tienden a ser un poco pequeños, pero los valores normalizados de 10 bits son lo suficientemente buenos la mayor parte del tiempo. OpenGL (3.3+) incluso le permite usar normales de 10 bits a través de un formato empaquetado 10/10/10/2 bits, almacenado en un único entero sin signo de 32 bits.
Incluso puedes jugar juegos con posiciones de vértice, si te encuentras con una gran necesidad de más memoria.
Sin normalización, tendrías que desperdiciar preciosos ciclos en tu sombreador dividiendo los atributos de byte por 255.0. ¿Por qué hacer esto, cuando el hardware puede hacerlo gratis?