In my midwestern American English, the main difference between the two is that "coat" has lip rounding, while "cult" does not have any lip rounding. If I keep my lips spread while saying "coat", it comes out sounding almost exactly like "cult". This resemblance between the words results from various phonological processes that have affected both words.
In its place of articulation, [o] is uvular -- the back of the tongue approaches the uvula -- and in SPE features, its "tongue body" features are [-high,+back,-low], the features for uvular sounds. (If it were [+high,+back,-low] it would be velar.)
Syllable offset /l/ in English is darkened, and more specifically, it is uvularized. The dark /l/ in English is generally described as velarized, but I think this is inaccurate, at least for my midwestern speech. The tongue body is high for a velar, but it is not high for syllable offset /l/, which is therefore uvularized, rather than velarized.
Due to the uvularization of /l/, "coat" and "cult" have a similar articulation: "coat" has a uvular vowel, and "cult" has a uvular /l/.
Other phonological changes make the tense /o/ of "coat" break into a first, syllabic, more open sound and a second, non-syllabic, closer glide sound. The syllabic part of this diphthong now resembles the caret vowel of "cult", except that it is still rounded. The glide part of the diphthong is a rounded uvular sound.
For "cult", because it is before a consonant, the syllable offset /l/, already uvularized, "vocalizes", that is, it loses the tongue tip contact characteristic of an ordinary [l], and it becomes a uvular glide.