As duas tem o mesmo significado, porém muda a forma de comunicação.
Na primeira "I dont",
significa não ter. "I dont have money" -> "Eu não tenho dinheiro"Já na segunda "I have no", a palavra "no" serve para enfatizar a sua afirmação. Logo, a palavra "no" nesse caso significa "nenhum(a)". Por exemplo, "I have no money". -> "Eu não tenho nenhum dinheiro."
Porém, existe uma regra no inglês em que não pode haver outra palavra negativa na mesma frase quando se utilizar o "no".
Então você não pode falar por exemplo "I dont have no money", nesse caso a palavra "no" deixa de significar "nenhum" e passa a significar "não".
Logo a pessoa nativa estaria entendendo o "no" como "não", ou seja, "Eu não tenho não dinheiro". O que torna a frase errada.
A mesma coisa acontece com "I haven't no money", "I have not no money", "I have no any money", etc.
Então nesse caso o ideal seria utilizar o dont, ficando "I dont have any money" ou "I dont have money"