Here's why:
* Short vowel sounds are typically pronounced quickly and have a more closed mouth position. The "o" in "cold" sounds like the "o" in "hot" or "lot".
* Long vowel sounds are typically pronounced longer and have a more open mouth position. You can usually tell if a vowel is long by seeing if it has a silent "e" at the end of the word or if it has a double vowel, like in "boat" or "see".
So, while the "o" in "cold" is spelled with an "o", it's pronounced as a short vowel sound.