What is the difference between, e.g., Bounded Bool and Enum Bool?
There is only one Bool type; it is an instance of multiple typeclasses. So, for example, it is a Bounded (meaning that there are "minBound" and "maxBound" values associated with it) and an Enum (meaning that there are "predecessor" and "successor" functions associated with it).
Look at the definitions of the indicated classes to see what they mean.