Between integral types, the main difference is signedness (whether the type can represent negatives) and size (how many bits the type contains, or the largest value the type can represent). Between integral and floating point types, whether the type can represent fractional values. Floating point types can have different size, too.
Then there's the non-basic types, which is a whole different story.