As always, the documentation for something leave a bit unexplained. I was interested in using "tailscale switch" to switch between a small non-shared tailnet (managed by Tailscale) and a shared cyberclub tailnet (managed by Headscale). The unmentioned part is to never use "tailscale logout", which expires the authentication key. Instead, use the following procedure for setting up the multiple networks:
tailscale login tailscale status tailscale down tailscale login --login-server=[headscale URL] tailscale status
In other words, first authenticate to the Tailscale-hosted network. Then run "tailscale down" and authenticate to the second network.
You can then run the following to list the available networks:
tailscale switch --list
The output will look something like:
ID Tailnet Account cde0 bob.github bob@github* 41da othernet othernet
The currently active network will be denoted by the asterisk at the end of the line. You can switch between the two with:
tailscale switch ACCOUNTNAME
My reasoning for needing the Tailscale-hosted account: I periodically need access to a less-technical family member's network for troubleshooting. I gave them a GL-Net Slate AX wifi router, which has runs a Tailscale client (you have to add it). You can configure the physical switch (on the side of the router) to turn the tailnet on and off. End result: if they're having troubles with something in their network, they turn the switch on, call me, and I can remotely troubleshoot their house network.