PostgreSQL warm standby: sync WAL files
If you use log shipping, then the archive_command on the master and the restore_command on the replica are responsible for copying the logs. The contents of those commands is up to you.  You can use scp, rsync, tar, ssh, or just plain cp command to and from a shared network folder; or any number of other things.  It is quite easy to come up with commands that generally work but fail in some edge cases, so you might want to use canned solutions that do it for you, like pg_barman or pgbackrest, as they are more likely to get the edge cases correct.

I don't know what your second question means.

For the 3rd, your archive directory generally shouldn't be on the same storage system as your database directory is, otherwise you have a single point of failure, which rather defeats the purpose.  So your rsync command should go inside archive_command, so that each file is sent to where ever it is you want it to go as soon as it is ready for archival. If you do want your archive_command to copy the data to a local archive, than your hand-rolled rsync should definitely be rsyncing from that local archive directory, not pg_xlog.

It is possible to combine both streaming and log shipping.  This is really useful if you also want to be able to do PITR (point-in-time-recovery), as then you need the WAL log archive anyway.  If you are not interested in PITR, then you should probably just use streaming replication, with replication slots to cover long outages.