As far as i know the purpose of this type is pretty much unknown, its just clear that it exists within the language, but its used nowhere by blizzard and also there is nothing said about it in the natives.galaxy file.
In addition, there is not a single function in the natives.galaxy file which requires or returns a handle.
The GUI doesn't list a "handle" type either.
Its probably a remainder from old days of the language or something. But im not an expert when it comes to galaxy script, so maybe someone knows a more pleasing answer to this quesiton.
I have no idea, if this is in any way related to SC2, but in WC3's Jass there was a type called Handle as well, and it basically was the parent type of most other complex types (unit, unitgroup, player, whatever). For example, you might be able to store a unit in a handle variable, then later override it with a playergroup. But probably not, since that would either require implicit typecasting for handles (which I doubt is supported) or conversion functions, which don't exist.
In WC3, these "existed" (or rather, were created) and were widely used in the return-bug era, where any handle could be converted to an integer and back (presumably the handle's internal ID).
Now, in SC2 the handle type could still be parent to all these other types, but since it is not used by any function and cannot be converted to anything (and no returnbug exists), we probably cannot do anything useful with it.
If i remember this correctly, handle variables can hold values of types that extend handle. Also, variables of types that extend handle can be assigned values of type handle, but those variables will become null if the value is not of a matching type.