Without microg you won’t be using push notifications. In that case the apps build up a background connection, so it’s more like a pull (from your phone) rather than a push (from the server onto your phone).
You don’t need a google account to use the push notifications, but right now you need to use the google servers (via microg).
Your question about the device identifier I can’t answer unfortunately. Not that deep into the details of the implementation (yet).
There is a relatively new project (idea) looking into implementing a separate, self-hostable push system, namely openpush and the /e/ guys are interested, but it’s very early stages, so have to see and wait what’s going to happen there. See e.g.