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.