Short answer: Colonel is pronounced the way it is because it’s based on the French military term, “coronel.”
Here in the U.S, “Colonel” is pronounced like “kernel.” Why is it spelled so differently you ask? In the 1500’s, English borrowed a handful of military terms from French, words like infanterie, cavalerie, citadelle, and also, Coronel. Interestingly, the French actually borrowed many of their military terms from the Italians. One of those terms was “Colonello.” The French then morphed “Colonello” into “Coronel” through the process of dissimilation which I’ll briefly discuss below.
Why do these words change? It’s a process called dissimilation, which is when two instances of a similar sound occur too close to each other in a word. People tend to change one of the instances of these sounds to something else when this happens. In this case, the first “l” was changed to “r.”
After the dissimilated French “Coronel” made its way into the English vernacular in the late 16th century, scholars began producing English translations of Italian military treatises. Under the influence of the originals, people started spelling it “Colonel.” By the mid 17th century, the spelling standardized to the “l” version, but the “r” pronunciation hung around.
What other words do you know that are spelled strangely?