You can use machine.config for any kind of .net application, including class libraries. But you can also use any config file of your choice (you can easily load an .xml file yourself), or the registry. I don't care much for the registry because of deployment difficulties.
Hosted websites won't give you access to machine.config or the registry, so you'd need to use your own config file in that case.
I made a singleton configuration class for my company that prevents it from being loaded more than once per app domain - this is a performance boosting benefit. I also added support for encrypting/decrypting sensitive values.
Be advised that if you use your own xml file you should treat it entirely as readonly to avoid any threading problems. Or else you can write your own code to do thread locking if you need to write to it from an application that might have multiple users writing at the same time.
You can read more about Singleton here - I strongly recommend option 5:
http://www.yoda.arachsys.com/csharp/singleton.html
Eric