This is a complex set of questions, where the right answer is going to depend on a lot of factors such as how you want to deploy your code, how many services you have, etc. Some random opinions:
Using one ip:port and using separate processes or not: Using gRPC, it is possible to create a process that hosts multiple separate services on a single IP:port. This means you CAN stick everything in a single process, or you can use multiple processes. It is up to you to decide what makes the most sense.
Should clients know the ip:port of the processes: At some level, they need to know *something* to be able to send requests to them. The simplest thing is to have a hard-coded list of backends. The most complex is probably to have some sort of service discovery thing, or use a load balancer.
Sorry this doesn't have much detail. The answers are really going to depend a lot. Hope this helps,
Evan