You are an experienced programmer and have a problem with the engine, shaders, or advanced effects? Here you'll get answers. No questions about C++ programming or topics which are answered in the tutorials!
Yeah, I was thinking that too. That must be why you can't call a drop() for individual nodes, maybe the individual drop() just stores the fact that it needs to be dealloc'ed when the device is eventually dropped. It would explain a lot I think.
Reference counted objects (subclasses of IUnknown) always start with a count of 1.
Gui elements are also being grabbed by their parent (which is in this case the GUIEnvironment itself if you don't specify one). This increments the reference counter to 2.
The mysterious drop brings it back to 1.
They finally get destroyed (death dropped) in the destructor of IGUIElement.