There are two APIs. API1 calls API2 through an HTTP Requester. API2 has a flow with a custom "CS:INVALID_USER" Raise Error and throws the error. The error is handled by the global error handler (propagate) in API2. When the error returns to the API1 Http Request module, the error is now different. It now shows HTTP:INTERNAL_SERVER_ERROR. I'm guessing it's because the custom error is only defined in API2 but i'm not sure. Is it possible to have the http requester receive the initial INVALID_USER error?
You are correct that errors only exist in the Mule application that raises them. The communication between both applications is through the HTTP protocol, so by default you will get an HTTP error in the client application, because the other application has to return an HTTP error. Explicitly if the error handling sets it, or implicit if not handled.
Either return some appropriate HTTP error or return a payload that contains the error details. The client application has to be prepared to interpret the response appropriately.