Why are we using the machine.config file to store connection string although we have web.config file? Any help would be appreciated.
Anything stored in your machine.config will be available to any website configured under it. The web.config stores configuration data specific to that application, only. Here's a good article highlighting the differences between the two:
http://24x7aspnet.blogspot.com/2009/06/difference-between-webconfig-and.html
We normally store connection strings encrypted in the Web.Config, although you can store it in the registry if you're concerned about security and encrypting the string in the web.config is not enough for you.
Se here: http://msdn.microsoft.com/en-us/library/aa302406.aspx
We have several apps and hundreds of connection strings. Storing them all in the machine.config would be a management nightmare. Then again, it might be a good way to centrally manage them and keep your dev web server pointing to the dev DB, while your live points to the live DB.. Interesting....