RPC allows calling methods on remote objects by marshalling parameters and unmarshalling return values. There are many challenges to RPC including unreliable networks, latency, security, and changing topologies. Smalltalk supports RPC through mechanisms like distributed events, value/reference passing, and marshaling objects to formats like JSON to enable communication across networks and between systems. Developing distributed systems requires strategies for handling issues like passing large objects efficiently and updating interfaces when remote objects change.