Can’t advise with cycles but if you just want good images for web display then .png is your man. OpenEXR half type will likely yield a smaller file size than .png 16 bits but can’t be displayed on the web. OpenEXR gives you several different compression algorithms to choose from so you need to find out which each is suited for via OpenEXR documentation:
Anything over 16 bits per channel , for VFX work, is more academic than anything else because most imaging devices can’t even come close to displaying their true color depth. Basically a broader color palette will allow you to do a wider range of image adjustments such as levels without causing banding in the image. Ultimately the format you choose should be determined by what you intend to do with the image after rendering. Final format should be chosen after all post processing is completed.
For the type of render that you’ve done I’d say you already have the right format chosen. That’s why it’s Blender’s default…it works well in a wide range of scenarios.
All images in Blender run through the OpenEXR Full Float pipeline which is hard wired into Blender. Any conversion happens after that, i.e. > 8 bits .jpg image texture > convert to full float OpenEXR > save out 16 bits .png. I think this is because OpenEXR is coded to work with just about every imaging scheme under the sun. I think it does this through the ImageMagick library.