For any geth node to join a network there are 2 requirement one is to have the same genesis block
and other is to have the same networkid
. Once these requirements are satisfied, to join a network you have to know the enodeid of the nodes you want to connect to.
In case of open Ethereum networks like mainnet or testnet, you have a set of bootnodes hardcoded into your geth client where you can connect and discover other peers in the network. These bootnodes actually have a list of nodes that are connected to it in the last 24 hrs and they give out that list to you and then you can connect to those nodes. This is how you connect to other nodes in a Ethereum public network.
So if you want to create a new open network then create a genesis file, select some networkid, start some bootnodes and share these details about genesis file, networkid and list of bootnodes with the participants of network and then they will be able to join your network.
I don't think there is any constraint over which networkid to choose if we have done all the above steps correctly.