What does "Entity API" add to the Drupal API, and why would a module depend on it? The Entity API module extends the entity API defined in Drupal. In which cases should a module use the API provided from that module? Are modules that implement new entities easier to be written if they depend on the Entity API module?

By "easier to be written" I mean that modules using Entity API would require less code to be written compared to a module that doesn't use Entity API.

I read the project page, but I still don't completely understand the reason to prefer creating a module that depends on the Entity API module, rather than a module depending only from Drupal core code. I understand that a module extending rules and implementing an entity should use the Entity API module; in the first case, the reason is also that the Rules module depends on the Entity API module.
Not complete, but here are some advantages that I know of:


Drupal core only provides an EntityController for loading entities. For save, update and delete, you either need to write it yourself or use Entity API.
You you can expose the base properties of your entities wit hook_entity_property_info(), see privatemsg_entity_property_info() for an example. The advantage of this is that rules.module knows your entity properties and you read and write them with rules. And you also get token integration for free.
It can also automatically provide you with an administrative UI for your entities