What is the purpose of drush entity-updates?
drush entity-updates is a developer tool. If you change entity/field definitions in your custom module you can quickly apply this.

In production this should not happen. If you update a module between official releases, then the update code in the module should handle this.

But in your case you are mentioning that your site is in developing. So there are a lot of things, which could have caused this. Either in your own code or in dev or alpha versions of contrib modules.

I found this example from the CR Write update functions for entity schema updates, automation removed (where there are further examples):

/**
 * Add 'revision_translation_affected' field to 'node' entities.
 */
function node_update_8001() {
  // Install the definition that this field had in
  // \Drupal\node\Entity\Node::baseFieldDefinitions()
  // at the time that this update function was written. If/when code is
  // deployed that changes that definition, the corresponding module must
  // implement an update function that invokes
  // \Drupal::entityDefinitionUpdateManager()-&gt;updateFieldStorageDefinition()
  // with the new definition.
  $storage_definition = BaseFieldDefinition::create('boolean')
      -&gt;setLabel(t('Revision translation affected'))
      -&gt;setDescription(t('Indicates if the last edit of a translation belongs to current revision.'))
      -&gt;setReadOnly(TRUE)
      -&gt;setRevisionable(TRUE)
      -&gt;setTranslatable(TRUE);

  \Drupal::entityDefinitionUpdateManager()
    -&gt;installFieldStorageDefinition('revision_translation_affected', 'node', 'node', $storage_definition);
}