What a type is, and what the compiler does with it
Swift’s type system is not a labelling scheme bolted onto a dynamic language. It decides how a value is stored, whether assigning it copies or shares it, where a method call ends up, and how much of that work is finished before the program ever runs.
The three chapters here follow that from the bottom up. Values and references is about what a type is — whether handing it to a function hands over a copy or a shared thing. Protocols is about what a type promises, and what the compiler builds so that promise can be called through. Generics is about writing one piece of code that holds for a whole family of types, and what each way of doing that costs at run time.
Read them in order the first time; each leans on the one before it. A generic constraint is only readable once you know what a conformance actually compiles down to, and that in turn only makes sense once you know whether the thing being passed around is a copy or a reference.