It deletes all the compiled and temporary files associated with a solution. It ensures that the next build is a full one, rather than only changed files being recompiled.
This is an old post, but I thought this was worth mentioning. When coding for Silverlight, I usually have Blend and VS2010 open at the same time. Because of that, sometimes VS2010 freaks out and IntelliSense can't find where stuff is or something, resulting in it falsely highlighting a lot of errors.
careful when you are cleaning a solution; when you do clean a solution and if you reference to a library (say nhibernate) in your project and if that library has a dependency ( say iesi.collections) , then you'll see iesi.collections will be deleted even if you rebuilt the solution and you have to put that dll to your folder, again. or you can also reference to iesi.collections and choose copy-local : yes option from its properties
I wanted this to be a comment but apparently need 50 rep.
To warn others, I find the rebuild solution doesn't do a clean myself. I'll often not I need to clean it and build/rebuild it after for it to work - I think rebuild it's self forces a full compile without clean and overrides everything, but does not get rid of the extras.
Did not look into what rebuild does code wise, just a general observation in case someone else has the same issue.