1) I decide to send some coin and enter the command on my Windows 11 computer with the wallet connected. Let’s say the transfer is from wallet_send to wallet_receive. Yes, I do realize, or think I do, the transfer is between bitcoin addresses identified on wallet_send and wallet_receive.
So far so good.
2) wallet_send, really the Trezor app on my computer, builds a message containing some kind of public key / hash that can only come from me and my wallet and uniquely identifies the bitcoin address controlled by this wallet. The message also contains the address to be transferred to.
A bitcoin transaction does not identify which bitcoin to spend based on an address, but rather based on the previous transaction which moved those bitcoin to the address they are now on. This is how an address can hold multiple different batches of bitcoin from multiple different transactions, but you can still choose which of these to spend at a time.
However, the underlying principle remains the same. Your wallet software will build a transaction which includes specifying which bitcoin it wants to spend, specifying which address(es) to send them to, specifying how much to send to each address, and some other important data you don't need to worry about, such as a version number and a locktime. It also includes a signature for each input you are spending. The signature varies somewhat depending on the type of address you are spending from, but essentially is created with the private key from that address. It is easy for other users to verify, but impossible for them to forge. The presence of this signature allows other users to verify that you do indeed own the private key necessary to spend the coins you are spending, without revealing anything about the private key itself.
3) The bitcoin network checks out the specifics and decides the transfer request is valid. The network moves the bitcoins from send to receive.
Essentially, yes.
4) Sometime later ( how much later? ) my computer / wallet_send gets a response verifying the transfer.
Within a few seconds of broadcasting the transaction, you should be able to see it appearing on the network as unconfirmed/zero confirmations.
5) How does wallet_receive learn that its bitcoin address has received the goods. Must it be on-line at the time of the send? I suspect not. So how long after the send can it be put online and get the message.
Next time that wallet software connects to a bitcoin node or server via the internet, it will ask for updated balances and transaction history for all its addresses. It does not need to be online at the time, but again, should be able to see the transaction appearing as unconfirmed/zero confirmations within a few seconds. How long the transaction takes to confirm depends on the fee it pays and the number of other unconfirmed transactions competing for block space.