There are, not so much rules, but tendencies for why letters are pronounced so crazy-different in different dialects of English, and so differently from Early Middle English.
Unfortunately you need to go through a lot of historical phonology to make sense of it. Fortunately Wikipedia has a decent summary of both the historical phonology, and of subsequent changes. Unfortunately you need a linguistic background for the changes to make sense to you.
Basically start by assuming that the spelling used to make sense, and then move forward from Middle English for each of the sound changes. (The changes from Old English to Middle English aren’t as critical to making sense of the spelling, since spelling was reset from scratch after the Norman invasion.)
The craziness of vowels around l’s and r’s, in particular, is something very characteristic of English—and it makes sense once you realise that, compared to other European languages, l and r are pronounced quite back in the throat (retroflex and velarised)—which makes adjacent vowels be centralised.
Like I said, you need a linguistic background for the changes to make sense to you…