Q : "Where does zmq_send() send with multiple connections?"
It does send messages depending on what of the actual Archetype is used.
PUB/SUB sends each message to all peers that are positively subscribed to a Topic ( left-side, binary matching of the payload as-string ), whereas some internal details in pre-v3 releases actually physically moved any message to all peers (and there the SUB-side Context()-instances, kind of ALAP, performed the Topic-filtering ), not so since v3+.
PUSH/PULL does not have this "promise", so better try to imagine the PUSH-side to be a job-queue commander, and each PULL-side worker receives ( in the round-robin manner here ) a next task from the job-queue, as the load-balancers do in common.
Each other of the built-in Archetypes - REQ/REP, XPUB/XSUB, DEALER/ROUTER, PAIR/PAIR, ... - have a similarly formulated "promised-behaviour", so ZeroMQ services can build on combining these trivial Archetypes into some more complicated & structured group-behaviours for messaging/signalling applications.
Q : "The reasonable assumption is, that it will be sent to all connected peers"
If it were this way, there would be lost the key property of the PUSH/PULL "promised-behaviour" and there would be no difference between this and a PUB/SUB Archetype ( which makes even less sense to develop two things that do the very same thing, doesn't it? )
In case one has never worked with ZeroMQ,
one may here enjoy to first look at "ZeroMQ Principles in less than Five Seconds"
before diving into further details