A relative clause is a subordinate clause that modifies a noun or a nominal.
Defining relative clauses give essential information about the noun. When the noun modified is a person and also a subject of that clause, who is usually used.
That can be used instead of who after all, everyone, everybody, no one, nobody, those:
When the noun modified is a person and also an object, who, that, or whom may be used. Or the relative pronoun may be omitted.
With prepositions we can use either whom or that. The use of whom is more formal.
When the noun modified is a thing and a subject of that clause, which or that can be used. The use of which is more formal.
If the relative clause modifies an object of a verb, which, that, or no relative pronoun can be used. Which is rarely used after all, everything, little, much, none, no, or after superlatives.
To express possessive, only one form is possible: whose.
Non-defining relative clauses provide non-essential or extra information about the noun or the nominal. Unlike defining relative clauses, non-defining relative clauses are separated from the noun by commas. The pronoun cannot be omitted in a non-defining relative clause.
When the noun modified is a person and a subject of the clause, only the relative pronoun who can be used in non-defining relative clauses.
When the noun modified is a person and also an object of the clause, whom is used.
When the modified noun is an object of a preposition, whom is used.
Possessive is expressed by whose.
In non-defining relative clauses, we mostly use which to modify nouns that are either subjects, objects, or objects of a preposition.
Connective relative clauses (one of ..., two of ..., several of ...) do not define nouns, but rather continue the story. Whom is used with persons and which with things.
Whoever and whichever can mean "the one who" or "no matter who."