Hello, based on my experience so far best practice to show rewarded video ads for me are:
1. I always preload one rewarded video ads when the game is start (main menu screen).
2. Using preload rewarded video ads every time players die might can cause game performance issue (fps drop / spike lag).
3. If possible create checkpoint system, offer the players to watch rewarded video ads to use checkpoint. If the player agree to watch the rewarded video ads then show the rewarded video ads after rewarded video ads finished or dismissed then preload new rewarded video ads.
If not possible to create checkpoint system, always preload new ads after the last one closed or dismissed, so you no need to preload every at the beginning of the level.
4. Do not use preload new ad from onRewardedAdFailedToLoad, make sure internet connection is connected before preload or you can create preload limit retries after ad failed to load.
5. "If I don't preload them, will there be a long delay before the video starts playing?", you need to preload them.
6. Always check your ad request (preload) versus ad impressions in you AdMob or other ad networks account, if possible try to make balance ad request vs ad impressions.
Hope this helps.
From Google AdMob:
Warning: Attempting to load a new ad from the onRewardedAdFailedToLoad() method is strongly discouraged. If you must load an ad from onRewardedAdFailedToLoad(), limit ad load retries to avoid continuous failed ad requests in situations such as limited network connectivity.
RewardedAd is a one-time-use object. This means that once a rewarded ad is shown, the object can't be used to load another ad. To request another rewarded ad, you'll need to create a new RewardedAd object.
A best practice is to load another rewarded ad in the onRewardedAdClosed() method on RewardedAdCallback so that the next rewarded ad starts loading as soon as the previous one is dismissed.
https://developers.google.com/admob/android/rewarded-ads