das heißt also ich könnte alle variablen, die als zähler fungieren statt als unsigned int mit unsigned char definieren?
Ja schon, musst aber sicher sein das der Wert nicht über 255 steigt.

hat dies einen großen geschwindigkeitsverlust zur folge, wenn man alle mit unsigned int definiert?
Ein Geschwindigkeitsverlust eher weniger, sollte für deine Zwecke auch absolut keine Rolle spielen.
Wenn du eine unsigned Variable deren Wert nie über 255 steigt als int definierst, ist das einfach nur Platzverschwendung.