Predefined are the types that are specially supported by the compiler. They alias .NET framework types in the System namespace. They are also called built-in types.
How are they supported by the compiler? They have their own keyword. For example int keyword is used to predefine System.Int32 type. This means that when you define an integer variable in C#, you can do so by typing:
int myIntVar = 3;
instead of
System.Int32 myIntVar = 3;
This is only syntatic difference though.
Primitive types are all predefined value types minus decimal type. I made a sketch that demonstrates this:

Hope this helps.