1st thing to understand is that Web Services are alternative to older styles or RPC:
- platform specific RPCs and application specific
- all above were way loaded with unnecessary details too
2nd thing is that it is sort of way to make API calls to object over http (or other transport, messaging, pigeon mail).
3rd important part is
- Every programming language since invention of web services can generate whole client code, which should make your application using webservice as some plain object with methods. No matter how many moving parts involved, you should be able as a user to compile, run, invoke, recieve results and exceptions as if it was local object.
The rest of complexity is caused by aspects of reliability, compatibility, security etc.