Silent letters are the ghosts of pronunciations past. The word 'knight', with its silent 'k', and silent 'gh', is cognate with the German word for servant, 'knecht', where every letter is pronounced.

Silent 'e' (eg, tot vs tote) is a bit more of a complicated story. In Chaucer's day, the 'e' was pronounced. So, in a word like 'bite' (not a real old-English example, but simpler for exposition) the 'e' at the end would have meant that the word was pronounced bi.te, with two syllables. In the Germanic language, open syllables had long vowels, so 'bit' would be short 'i', 'bite' would be long. Nowadays, the distinction between long and short vowels in English is actually more than just length because of the Great Vowel Shift.

So, whereas before, 'bite' would have been something like 'beetuh', the Great Vowel Shift and the eventual elision of the final 'e' makes its modern pronunciation 'byt' – silent 'e'.

Another process occurs when we borrow words from other languages. 'Tsunami' was borrowed from Japanese, and 'psychology' was borrowed from Greek. The initial consonant sounds in these words are not used in English, at least to start words. English ends words with those clusters, though: 'hats', 'chops'. The initial 'p' in 'psychology' (and 'pterodactyl', and other words from Greek) has become silent in English. Some English speakers – not all – simplify the word 'tsunami' by not pronouncing the initial 't', so that it fits in with the phonological rules of English.

Often silent letters in English are actually diacritic letters. This means that rather than being pronounced, they change the pronunciation of another syllable. Compare the words 'fin' and 'fine'. The 'e' isn't pronounced, but it changes the pronunciation of the vowel by lengthening it. Consider also: 'fat'/'fate', 'hat'/'hate', 'don'/'done'.