The proxy could interface to anything: a network connection, a large object in memory, a file, or some other resource that is expensive or impossible to duplicate.
Use of the proxy can simply be forwarding to the real object, or can provide additional logic.
In the proxy, extra functionality can be provided, for example caching when operations on the real object are resource intensive, or checking preconditions before operations on the real object are invoked.
Clients can't tell whether they work with a subject or its proxy.
In place of a complex or heavy object, a skeleton representation may be advantageous in some cases.