export is a straight copy of the run directory. This is used to create archives, either to cleanup you working directory (e.g. to focus on a active runs without complicating commands with runs that you’re not currently interested in) and to backup runs to a file system.
push is a remote operation, so Guild is going to copy or move runs to another system. Guild supports a variety of remotes including S3, Azure, ssh, and even GitHub (via gists). Use this when you want to backup or share runs across systems.
publish generates an HTML report of runs. Use this to share run results with others. Note that run directories are not copied in this case.
So high level differences:
Use export to archive runs to a local system directory