What is the use of “With Sharing” and “Without Sharing” keyword in Apex Class?
Apex code generally runs in the “System” mode meaning that through an Apex Class the current user could get access to records which he would not have access normally through the User Interface.
So, to ensure that your Visualforce Pages or whereever you use Apex Classes runs in the current user’s context (i.e it fetches only information that the user generally has access through the User Interface) use the “with sharing” keyword.
“without sharing” is the exact opposite of “with sharing” and is the default.
Source: http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_classes_keywords_sharing.htm