As Mathias said, there are not established standards, but rather best practices.
I would follow the directions of google developers:
You may want to wait before showing the prompt to the user, so you don't distract them from what they're doing. For example, if the user is in a check-out flow, or creating their account, let them complete that before interrupting them with the prompt.
So you might decide to provide in some page of your app a "Add to Home Screen" button, that allows the users to decide when and if they want to install your PWA. However I find also the automatic appearing of the prompt not too intrusive, but this also depends on your users target.
If you want to learn more, you can have a look at my articles based on PWAs.
About your other questions:
A service worker (SW) runs on a separate thread than the one used by the web site, for this reason is defined "non blocking". You do not want that an issue or long time operation running on the SW would affect the web site performance.
A SW, acting as a proxy between your app and the network, can only work on a secure (HTTPs) connection. Here a whole set of details about service workers.
- You can define different caching strategies to leverage the true benefits of SW. Here you can save not only static assets, but also HTTP GET Requests for improving the application performance and response time.