Am I directionally correct here: a client publishes a nip-97 event with the push token and then a relay or some server that wants to send a push notif fetches the nip97 event for the npub they want and gets their push token out of it?
You send the event in the body of a POST call to the service of preference. The service then connects to those relays and sends the events themselves down via Push Services, like Google/Apple/Unified Push. The 10097 kind just registers which services the user would like to use for push.