You can think of any Ethereum-based network, quite literally, as a collection of independently running pieces of software spread across the world. They are 'sending messages' to each other in a certain agreed-upon format. The 'agreed-upon' format is called the protocol which is a set of rules for forming the messages.
In order for any particular Ethereum-based network to identify other members of the same network, all the members of that network need to be configured in the same way.
If you run Geth and configure it (either through config files or command line options) for the Ethereum mainnet, then it will send and receive messages on the mainnet.
If you configure Geth to join one of the testnets, then it will join that testnet.
There's no 'cross-talk' between network because Geth is either configured properly to communicate on a network or it's not. If Geth is not configured properly for mainnet, then it will join a different network (but only if there's anyone out there listening...)
In your case, you want to get all the "people you have chosen" to configure their Geth instances to communicate on your network.
I'll leave it as an exercise for you to dig into the details of configuring Geth. That's definitely documented online. Look for "Setting up a private Ethereum network."