Use of If-None-Match with GET is clear: conditionally refresh caches.
Use of If-None-Match:* with PUT is to restrict the UPSERT behavior to true INSERT, for which OData already has POST ~/EntitySet, so this would just be an addition to ODATA-37.
Use of If-None-Match with an ETag value is unclear: it seems to be just a performance-optimized version of "ignore what other people told you and do what I tell you now".