First, when counting years, you use irregular genitive plural form «лет». Genitive plural is not «годо́в» (which would be expected), but «лет». It actually comes from the word «лето» 'summer'. I.e. you're counting not by years but by summers!
Please note that 'лет' is only used when counting years (e.g. with numerals or words expressing quantity, such as мно́го 'many', ма́ло 'few', доста́точно 'enough' etc.). In other contexts, you use «годов» as a genitive plural form. E.g. «Пеки́н девяно́стых годо́в» 'Beijing of 90’s'.
Second, the rule for choosing the case form after a numeral. They're somewhat complex: you use either nominative singular, or genitive singular, or genitive plural. (The good thing they're same for all the nouns.).
For numbers ending in оди́н you use 'год': e.g. оди́н год '1 year', два́дцать оди́н год '21 year', сто оди́н го́д '101 years' (but not 11 because it's оди́надцать, it ends in -дцать).
For numbers ending in два́, три́, четыре you use 'го́да', genitive singular: e.g. два́ го́да 'two years', три́дцать три́ го́да '33 years', сто́ четы́ре го́да '104 years'. (But not двена́дцать '12', трина́дцать '13', четы́рнадцать '14' because they end in -дцать).
For other numbers, i.e. ending in пя́ть '5', ше́сть '6', се́мь '7', во́семь '8', де́вять '9', де́сять '10', -дцать, and ending in zeroes, you use the genitive plural. For 'год', as I've said, it's not «годов» but «лет»: e.g. пя́ть лет 'five years', со́рок шесть лет '46 years', сто́ лет '100 years', ты́сяча лет '1000 years'.
how would this sentence be said if it was: "is he four or five years old?"
After soft consonants, Russian vowels can become fronter: so, пять /pʲatʲ/ can be pronounced [pʲætʲ], лёд /lʲot/ can be pronounced [lʲøt], люк /'lʲuk/ can be pronounced ['lʲyk]. This distinction is not phonemic in Russian: that is, both [a] and [æ] are considered the variants of pronounciation of /a/.
(Compare English: English speakers usually pronounce 'key' with soft [kʲ] and 'caught' with hard [k], but they are not distinguished in English, and we consider both to have the same phoneme /k/ because English doesn't distinguish [kʲ] and [k]. In the same way, Russian doesn't distinguish [a] and [æ]. We just consider them both variants of /a/, just like English considers both [kʲ] and [k] to be variants of /k/.)
If you decide to pronounce [æ] in пять /pʲatʲ/, make sure it's an open vowel [æ] and not a mid vowel [e]! Because [e], unlike [æ], will be understood to be a different phoneme: /e/. In fact, петь /pʲetʲ/ is a completely different word, meaning 'to sing'!
The exact reason for choosing [a] or [æ] might depend on accent or on speed of speech. Since [a] and [æ] are considered variants, you can choose any, really. (But make sure you only do this after soft consonants. I.e. in па́сть you can only pronounce [a]: [pastʲ], because [p] is a hard consonant.)
Probably you want to stick to the 'default' pronounciation, i.e. [pʲatʲ] and not [pʲætʲ], if you're unsure if you can distinguish [æ] and [e].
Sorry if my explanation is unclear, please ask questions.
Thank you for such a full reply... I honestly don't think I can distinguish between the sounds for [æ] and [e], so I'll stick to saying [a], and just accept that sometimes this might sound like [ae] when people say it to me... :-)
I have noticed that vowels have the tendency to be slightly raised when followed by a palatalized consonant or the /i/ sound. This occurs in other languages, so I imagine it is just a natural physiological process of anticipating the raising of the tongue for the following sound. Any comment?
I put "Is he five or six years" I teetered on the brink of giving the answer they gave, but I can't see that there is any real difference. A slight nuance perhaps? It was marked wrong.