Answer
Value types store their actual data directly on the stack (or inline within other objects). Assigning one value type to another copies all data.
Reference types store references to objects on the heap. Assigning one reference variable to another makes both point to the same object.
This difference impacts memory layout, performance, assignment behavior, parameter passing, and garbage collection.