Struct is a value type. Class is an object type.
You use value types when you never have to pass it by reference into a function/method parameter -- i.e. you can't change it inside of a function/method.
Whenever you pass it into a function/method, it always gets copied (i.e. pass by value), never by refernce. Structs are automatically boxed when being accessed like an object.
In practice, structs are used to model whenever you have a chunk of data that form a coherent whole (e.g. Color with RGB, vectors with XYZ, complex numbers etc.) and the whole item forms a single unit.
They are also used a lot to interface with unmanaged libraries (e.g. C or C++ DLL functions that accept struct parameters).