You want to call a method in another process, potentially on another machine. In order to do that you both need to agree on what the networking protocol looks like. gRPC uses HTTP/2 for the control and data channel and uses Protocol Buffers to describe the method call, its parameters and ultimately its return values. Since this is standardized across languages it doesn't matter if the caller is Python and the callee is Java, you can still make the method call.
you'll get some json back. what happens is the browser resolves "api.github.com" (via DNS) to an IP address, and then opens a socket connection to that address. then, in accordance with the HTTP protocol it executes a "GET" operation (a notion particular to HTTP), and in response the github server will talk to a database or cache and respond with data appropriate to request.
because this sequence of events happens across network boundaries (ie, your browser is talking to something outside your computer), it's often referred to as a "remote" procedure call.