1.Sanity Testing is done before putting any initial test effort.
2.When the build comes to the tester after it is unit tested by the developer,the tester conducts an initial test by checking whether the critical functionalities are working fine or not.
3.If the sanity test succeeds,he goes for the actual testing of the build.
4.If the sanity test fails(the critical functionalities fail during the test) he rejects the build and sends a report to the concerned person mentioning the reasons for rejection with the build date,version number etc.
"The overall need for sanity testing is to check whether the build is in a sane poistion to be tested."
Search for "Sanity" in the functional testing forum. I'm not just telling you this to avoid answering your question. You will find that this has been answered many times in the past with many many examples. The latin phrase "ad nauseum" would be a good description of the discussions on this topic.
Sanity Testing is performed when ever cursory testing is sufficient to prove the application is functioning according to specification. This level of testing is a subset of regression testing. It normally include a set of core test of basic GUI functionality to demonstrate connectivity to the database, application server, printers etc....
Your characterization of sanity testing is not entirely accurate. It is cursory testing, but it does not prove that the application is functioning according to specification. It merely shows if the application is ready for more in-depth testing.
It is also not a subset of regression testing. It is a test in and of itself. Sanity testing can and will be peformed during the first build, before any regression is ever performed.
Hope now you must have got an overall picture of sanity testing. My view is also the same as per the quote by Darrel. In general sense you can say it is a kind of testing(may be functional, database test, ... etc)which ensure a first level of satisfaction/confidence on the build. So that further testing can be carried out.