How are data and references to objects actually communicated across process boundaries?
Every language that is CORBA compliant has a defined mapping to communicating via IIOP (e.g. Java, C++, Delphi, COBOL). This protocol is used to communicate across process boundaries.
For CORBA objects that communicate within a process, optimizations are made within quality ORB's to reduce any unnecessary overheads.