As a part of Service builder, I used Local services many time but I never used the Remote services. I Read about the Remote services from the following tutorial http://www.liferay.com/documentation/liferay-portal/6.1/development/-/ai/writing-the-remote-service-class-liferay-portal-6-1-dev-guide-en.
Still I didn't completely understood the purpose and where exactly we use these Remote services.
Can any one please explain where and why we use these remote services with simple real time example.
Local services can only be invoked by Liferay itself or by a Liferay application (e.g., by a Liferay portlet). Remote services can be invoked by any application that can access your Liferay portal (e.g., over the internet).
So, for example, if you wanted to create a desktop or mobile application that can access Liferay's Bookmarks API, you'd need to invoke the Bookmarks remote services: http://localhost:8080/api/jsonws?contextName=bookmarks
Similarly, if you're creating a custom Liferay entity via Service Builder and you want to allow developers to create desktop or mobile clients that can interact with your entity (e.g., peform CRUD operations on your entity), then you need to create remote services.
Also it's a Liferay best practice and convention not to add permission checks to local services but only to remote services. Even if you don't anticipate that any non-Liferay applications will need to access your service, you should still consider creating remote services, if only to have a place to add permission checks. (Your remote service would include permission checking code and then would invoke local your local service. This is a common pattern in Liferay.)
For more information, see https://dev.liferay.com/develop/tutorials/-/knowledge_base/6-2/creating-remote-services.