Tips for BaseFieldDefinition and entity references

To set which other entity type should your field reference you can do it with this settings on base field

    $fields['project_reference'] = BaseFieldDefinition::create('entity_reference')
      ->setLabel(t('Project reference'))))
      ->setSetting('target_type', 'other_entity')
      ->setSetting('handler', 'default')

key here is       ->setSetting('target_type', 'other_entity') that sets this to reference "other_entity" which is id of entity we want to set as target.

To do this when you have entity that is bundable and choose specific bundle of that entity like when you have taxonomy vocabularies, do this instead

    $fields['properties_reference'] = BaseFieldDefinition::create('entity_reference')
      ->setSetting('target_type', 'taxonomy_term')
      ->setSetting('handler_settings', [
        'target_bundles' => ['properties' => 'properties'],
        'auto_create' => FALSE,

here we have setSettings with handler_settings where we use "target_bundles" which is array of what taxonomy vocabularies can be referenced or in some other cases this would be entity bundles like content types with nodes etc