Leaving aside MFC (I'm using the SDK), then, it would appear there is no way to determine the color in a particular HPEN unless there is an accessor function made available by HPEN to get the color. And there is no way to translate a handle to a pointer, that being the reason for handles in the first place. If that's the case, your last statement in 1), that "mainly, a handle is a pointer" would be more accurately put that it functions like a pointer, except that it can't be used to directly access the object's data like a pointer could. Is that a correct assessment?
if it is, is there such an accessor function to get the color from an HPEN? I haven't been able to find such.