I’m not sure this is really a good fit for ELU (perhaps better on Linguistics), but here goes anyway.
French dent and English tooth share a common ancestor, Proto-Indo-European *(h1)donts (nominative), with the stem *(h1)dent-. The initial *(h1) was lost very early on, in prehistoric times, so we don’t need to worry about that here.
Of the two different PIE stems (one with an *-o-, one with an *-e-), the Italic languages – or at least Latin – generalised the *-e- from the oblique stem throughout. Apart from that, not much else happens before Latin. In Latin, the consonant cluster *-nts is reduced to -ns, but that’s about it. So in Latin, the word for ‘tooth’ is dens in the nominative and dentis in the genitive.
The Romance languages, the survivors of Latin, generally lost the nominative case later on and generalised the accusative, so the French form actually continues the Latin accusative, dentem.
Final syllables were weakened in Common Romance and lost entirely on the way to Old French. This had already happened by the time people really started writing French (as opposed to Latin), so the Old French form ends up being written as ⟨dent⟩, a written form which hasn’t changed. In early Old French, it would have been fairly transparently pronounced as /dεnt/, too.
In actual fact, however, further changes have happened to the word. Quite early on, within the period of Old French, syllable-final n was also lost, leaving behind a nasalised vowel /ã ~ ɑ̃/ in its stead, so in late Old French, ⟨dent⟩ represented /dãt/ or /dɑ̃t/. Some centuries later, during Middle French, final consonants also started to be lost, especially before another consonant; by 1700, this loss was generalised to most positions except right before a vowel, so the final t in ⟨dent⟩ would be mostly silent.
Like English, French spelling is quite conservative and is more of a reflection of an earlier stage of the language than of the current stage; so even though it’s still spelt ⟨dent⟩ in Modern French, only /dɑ̃/ is left in the pronunciation.
Unlike Italic, the Germanic branch of languages generalised the old nominative form with the -*o- vowel. Besides that, a lot more happened early on in Germanic than in Italic.
Two of the most profound and very early changes that occurred very early on were:
The most profound was a sound shift known as the Germanic Sound Shift or Grimm’s Law, which (among other things) changed *d to *t, and *t to *þ (pronounced /θ/). So the nominative form *donts becomes *tonþs.
Also very early on, short *o and *a merged as *a, so *tonþs becomes *tanþs. (Both these changes were in fact so early that I don’t think we know for sure which one happened first.)
The final *þs was simplified to just *þ at some point during all this, leaving behind *tanþ.
Later on, during the stage known as North Sea Germanic (or Ingvaeonic), nasal consonants were lost before fricatives under the Ingvaeonic nasal spirant law, leaving behind a long, nasalised vowel which in most of the languages affected became rounded. This changes *tanþ to *tɔ̄̃þ (with a long, nasal, open o sound) or something like that.
Later on, probably during Anglo-Saxon or very early Old English times, the nasal quality of the vowel is lost, leaving *tɔ̄þ, and the ‘open o’ coincides with the regular o, yielding the form attested in Old English writings: ⟨tōþ⟩.
Eventually they started writing the long ō sound /oː/ as a double o, and the letter þ fell out of use in favour of the digraph th, giving the written form the word now has: ⟨tooth⟩.
Much, much later, during the Great Vowel Shift, /oː/, was (mostly) raised to /uː/; but as I mentioned above, English spelling is conservative, so the spelling remained as it was, and ⟨tooth⟩ now represents /tuːθ/.