My questions are:
You should use value types for small, immutable types which represent values. Never make mutable structs.
For everything else, use reference types.