ImGui looks decent but is "designed and optimised to create debug tools." If you're building a game that doesn't look like a debug tool, you'll want to do some kind of skinning or at least make the UI fit into the aesthetic.
It's great and I actually borrowed ideas from his examples.
Immediate mode and retained mode UIs are entirely different beasts though, with different targets / use cases. Something like dockable windows would be much harder to implement in a IMGUI lib
RM vs IM is entirely about where the name (id, pointer, whatever) of the widgets comes from. In RM it comes from the library, and is typically a pointer to some data that represents the 'widget', and in IM it comes from the user and is frequently a string or other local pointer (sometimes macros are used to generate IDs).
Anyway, there's no reason this would be harder to do in IM, other than that a lot of people are more familiar implementing RM than IM.