Diferenças entre 'Who", "Whom", "That" e "Which" em Inglês

Who -vs- Whom
Ambas formas se usam para referir-se a pessoas, porém "whom" é mais formal e "who" se usa mais no inglês moderno, ficando "whom" para a escrita de textos muito formais.
Exemplos:
The person whom I wanted to see was American. (formal)
(A pessoa que eu queria ver era americana.)

The person who I wanted to see was American. (menos formal)
(A pessoa que eu queria ver era americana.)
"Whom" funciona como objeto e "Who" como sujeito.
Exemplos:
The woman who is speaking is a doctor. (sujeito)
(A mulher que está falando é uma médica.)

That woman whom you asked is my mother. (objeto)
(Aquela mulher que você perguntou é minha mãe.)
Em construções em que uma preposição anteceda ao pronome se usa "whom".
Exemplo:
The writer from whom I received this book is well know.
(O escritor de quem recebi este livro é bem conhecido.)
Who -vs- That -vs- Which
A principal diferença entre "that" e "which" é que "that" pode ser usado com pessoas, coisas e animais e "which" apenas com animais e coisas, nunca com pessoas.
Exemplos:
The cat which / that I saw in the garden was lost. (ambas formas são corretas)
(O gato que eu vi no jardim estava perdido.)

I met the woman that lives next door. (correto)
(Eu conheci a mulher que mora ao lado.)

I met the woman which lives next door. (errado)
(Eu conheci a mulher que mora ao lado.)
Usa-se "that" para pessoas, animais e coisas e "who" apenas para pessoas ou animais personificados. Por outro lado, "that" pode ser usado como sujeito e objeto direto e "who" apenas como sujeito.
Exemplos:
I saw the boy who / that you met last night. (ambas formas são corretas)
(Eu vi o menino que você conheceu na noite passada.)

The disks that I sent you. (correto)
(Os discos que eu enviei.)

The disks who I sent you. (errado)
(Os discos que eu enviei.)
Se o sujeito não está identificado podemos usar ambas formas "who" e "that", mas se for identificado somente poderá ser usado "who".
Exemplos:
Where is the man who / that sells the hot dogs? (ambas formas são corretas)
(Onde está o homem que vende os cachorros quentes?)

This is Bill, who sells the hot dogs. (correto)
(Este é Bill, que vende os cachorros-quentes.)

This is Bill, that sells the hot dogs. (errado)
(Este é Bill, que vende os cachorros-quentes.)
Usamos "that" nos seguintes casos:
Quando houver dois antecedentes (pessoa e animal ou pessoa e coisa).
Exemplo:
Tell me about the people and cities that you visited last holidays.
(Conte-me sobre as pessoas e as cidades que você visitou nas últimas férias.)
Após superlativos.
Exemplo:
This is the best book that I've ever read.
(Este é o melhor livro que eu já li.)
Após "all, only, everything, none, some, any", e seus compostos.
Exemplo:
All that he said is right.
(Tudo o que ele disse é verdade.)
Após ordinais.
Exemplo:
Sam is the first student that has ever done this exercise.
(Sam é o primeiro aluno que fez este exercício.)