In the world of HTTP, the origin server is the server on which a
document resides (or is generated, in the case of dynamic content).
A caching server is not (wrt a cached document) an origin server,
because the document it holds is a copy of an original that resides
somewhere else. (That is, the URI that was used to request the
document did not refer to the caching server, but to a different server.)
An HTTP client program (e.g., your web browser) may or may not connect
directly to the origin server when initiating an HTTP transaction.
Other servers -- which may be caches, proxies,
gateways, or tunnels -- which may process the
request/response may be interposed between the client and the rest of
the Internet, generally because of local policies in the client's
organization.
A simple client program may not concern itself with whether it is
connected directly to the origin server, and still work satisfactorily
most of the time. But progressing through the continuum between minimal
functionality and full compliance with the specification, an HTTP party
must concern itself with more and more of the HTTP headers; proper
interpretation of some of which requires consideration of whether the
header was attached to the response by the origin server or by an
intermediary.