Can you please tell me what is the best way to learn SharePoint development and also some reference sites or books.
I would say to start with the tutorials from microsoft.
Really focus on 1. Creating Site Columns 2. Creating Content Types 3. Creating Custom Lists
Those are the basics that will help you use Sharepoint.
Once you think you are confident enough you should start learning the helpers (e.g. SPUtility ) and the Sharepoint Object Model. For instance a Site Column maps to a SPField when using Microsoft.Sharepoint.dll, and to Field when using Client API ( this api uses REST calls in order to use Sharepoint )
I recomend Sharepoint 2010 Development as a Platform as far as books go, it's the Bible IMHO.
The next step is to master deployment, Event Receivers, and WebParts. Have fun