I don't use GNOME, so I can't comment. I just use XMonad as a light weight window manager, and don't bother with any 'desktop environment'.
I don't know how Ubuntu nor GNOME store their configuration. I suspect they have lots of plain text config files, but they might also have other formats like databases etc? I think the more important part is that they try to 'magically' do much of the config for you, and sometimes that magic breaks.
I found 'etckeeper' quite useful, it sticks your /etc in a git repository and makes commits when something changes. So you can at least review what just changed that must have broken your config. (I use etckeeper on Arch, but it seems to be also available on Ubuntu.)
I don't know how Ubuntu nor GNOME store their configuration. I suspect they have lots of plain text config files, but they might also have other formats like databases etc? I think the more important part is that they try to 'magically' do much of the config for you, and sometimes that magic breaks.
I found 'etckeeper' quite useful, it sticks your /etc in a git repository and makes commits when something changes. So you can at least review what just changed that must have broken your config. (I use etckeeper on Arch, but it seems to be also available on Ubuntu.)