Why _ood of food is pronounced u: and _ood of good is pronounced ʊ?
I'll try to say something about the origin of this difference. My knowledge is limited, so all I can offer is an outline.
The spelling of "food", "good" and "blood" reflects their pronunciation in Middle English, which was /fo:d/, /go:d/ and /blo:d/ respectively. The
Great Vowel Shift changed them to /fu:d/, /gu:d/ and /blu:d/. Then splittling started. For some reason, which I don't know, English speakers started to shorten the vowel in some of the "oo" words, but not all. "Food" and "mood" are among those which remained the same; "good", "blood", "flood" are examples of those which changed.
However, the change didn't occur at the same time for all of them. "Blood" and "flood" became /blʊd/ and /flʊd/ earlier than "good" became /gʊd/. Because of that "blood" and "flood" were there when the so-called foot-strut split started.
The foot-strut split was (and still is) about changing /ʊ/ to /ʌ/ in some words. (The history of this split is more complex than that, but it's rather irrelevant here.) For example, "cut", which was pronounuced /kʊt/, became /kʌt/. Again, this didn't occur for all words. "Put", for example, is still /pʊt/. But it did happen to "blood" and "flood" which were, as I said, /blʊd/ and /flʊd/ at that point. The foot-strut split changed them to /blʌd/ and /flʌd/.
But, at the time the foot-strut split was happening, "good" was still /gu:d/, so the split didn't affect it. Later however, "good" underwent the change "blood" and "flood" had undergone earlier, and became /gʊd/, but it was too late for catching the foot-strut train and becoming /gʌd/.
Interestingly, in
Northern English and in the
Midlands, the foot-strut split never occured (even though it's present in Scotland!), and so "good", "blood" and "flood" have the same vowel /ʊ/ in those accents.