This answer is primarily Spain based, particularly south Spain (Andalucía), although there are a few words included here that i don't usually hear in my surroundings.
Diego mijelshon's answer is pretty good, but i'd like to add that i believe it is less about absolute ages and more about relative ages, this is further explored at the end of the answer, first let's see where we can "objectively"(?) place each word.
The words i'll be categorizing are these (please comment any word i may be missing):
niño/a, nene/a, chico/a, chaval(a), muchacho/a, mozo/a, joven, señorito/a, señor(a), tío/a
.
- Niño/a and nene are usually used for very young people, i'd say it starts to become weird once the 12/14 years old barrier has been passed.
- Chaval(a) is mostly used for teens, let's say between 12 and 18/20 years old.
- Chico/a can be used as long as either niño/a or chaval(a) are appropriate.
- Muchacho/a will usually be used for any age up to 25/30, this isn't the most commonly used word though, and I personally only use it to address people of my own age group (20-30), and use other words for the younger people.
- Mozo/a is, as fas as I know, pretty uncommon, and mainly used in rural areas or by elder people, that being said, this word basically includes any age as long as the person is not perceived as "old".
- Joven is used in similar contexts as mozo/a, except it's a bit more common.
- Señorito/a is a special case: señorito is very rarely used, and you'd most likely hear it in movies which imply a buttler talking to a very young master, however señorita is more common, and is used for full grown adults but implying that she is still young.
- Señor(a) this one is very straight-forward, any person perceived as a full grown adult can be called señor(a). Please note thay conventionally, señor and señora used to imply that the person is married, this is no longer the case for as far as I know.
Tío/a
may be the most special case of them all. this is the most informal way to address someone out of this list, and is only used between people of the same age group. This can range from little kids among eachother to full grown adults in their 40s and even older.
Now let's see what happens when these different groups interact:
Let's say a "niño" meets a "muchacha", he probably won't be calling her like that, instead you might hear "señora" or "señorita".
Now let's have an elder person (say 70 years old) meet a 40 years old man, 40 years old should probably be "señor", yet this elder person may call him "muchacho" because of the difference in age.