Re 1. Reliability depends on the configuration you're using, whether write through (async=false in cache store config) or write behind (async=true). The latter is less reliable (failures don't propagate to the client) but it's faster. With a write through config, any errors updating the DB will be propagated to the client, that will be you sign that something might have gone wrong.
Re 2. It's different design. In the first, the cache or data grid, is the primary source of storage, and the DB is just a backup, whereas the 2nd one the database is the primary source of storage and the cache is used to speed up access to data. The latter is what is done JPA providers such as JPA. The difference of the two depends on your client app, do you want it to talk to a remote cache? or Hibernate?...etc.