How do those nodes connect to me (or me to them) without me knowing their ip address?
Bitcoin Core have hardcoded DNS seed and node IPs. If you are running a brand new node, that information is where your node relies upon to get in into the network.
After establishing that part, each node in the network do also share each other information and the node may keep the information in their own known-node local databases, so other or you can connect to each other. For a further detailed explanation, you can refer to:
https://developer.bitcoin.org/devguide/p2p_network.html