An Drupal entity is a group of one or more fields that correspond to a relational database containing one or more serialized storage units (say, one or more tables).
The simplest entity will contain one field corresponding to one serialized storage unit (say, one table) of a relational database.
In a programmatic and GUI sense:
Drupal entities are fieldable in the sense that one can easily add fields to it as it is a "field bundle", without writing further code; simply by pointing, clicking, and typing in the admin interface of a Drupal website
Drupal entities are displayable in the sense that one can easily control what Fields are shown, hidden, or displayed in different styles without writing custom template or CSS code; simply by pointing and clicking on the admin interface of a Drupal website.
With the years, Drupal entities have had more services, wrappers and syntactic sugar added to make them more useful.
Entities can be of different types (entity type) and Drupal has several such types in core.
Entity types allow creation of custom entity types.
In another way to put it, an entity is an object of data (model) and entity types would be different subtypes of that entity.
An entity concept is not unique to Drupal → you can look at other frameworks for a similar implementation, as in Symfony, Rails or Django (and plenty more).