In the old days, everything was ini file based. And it caused a lot of issues for shared things, like John said. I had quite some issues with multiple ini files located in different locations. Depending on the search path, things worked differently. Also, everyone just did their thing in them. No standardization of any kind.
The registry changed that. And while it is not perfect, it has improved quite a bit since Windows 3.1. It now works like a transactional DB, so that in case something goes wrong during a write, the registry is not corrupted. In fact, I have not seen a corrupted registry in years. I also never use any registry cleaners as their track record is not so good...
Since it is a DB, access to the entire registry is quite efficient. Imagine your computer having to go through hundreds or even thousands of xml or ini files?
The problem that some people have with the registry according to me is that a lot of applications do not clean up the registry when removing the application. I'm not sure that those "lazy" programmers would clean up the ini files either.
A well-behaved program that uses the registry correctly (as it is designed and documented by microsoft) should never have a problem with it.
Another problem people have with the registry is that they don't find their way in it and that they have no idea what goes into the registry. But then again, would people know if it was all written in xml files?
A good tool to see what happens in the registry with a certain application is process explorer (from Microsoft - sysinternals).
If you really have issues with the registry, or want to know more about it:
http://www.apress.com/gp/book/9781484209936