How do I remove the title field from a node's custom view mode
The output of the title is different from the other fields. The reasons for that is, that the title is used for the title block and as metadata in the html head:

html.html.twig:
&lt;!DOCTYPE html&gt;
&lt;html{{ html_attributes }}&gt;
  &lt;head&gt;
    &lt;head-placeholder token="{{ placeholder_token|raw }}"&gt;
    &lt;title&gt;{{ head_title|safe_join(' | ') }}&lt;/title&gt;


If the node is used in another context, for example when it is part of a view, the title is placed in the node template as {{ label }}:

node.html.twig:
  {% if not page %}
    &lt;h2{{ title_attributes }}&gt;
      &lt;a href="{{ url }}" rel="bookmark"&gt;{{ label }}&lt;/a&gt;
    &lt;/h2&gt;
  {% endif %}


This is controlled by the variable page, a boolean, which is true, if the view mode is full. This is standard in drupal, when the node is displayed as main content and the title should appear in the head.

If you want to change this default behavior, you have to edit the node twig or change the variable page in preprocess.

In preprocess this would look like this:

function theme_preprocess(&amp;$variables, $hook) {

   if ($hook == 'node') {
      if ( $variables['elements']['#view_mode'] == 'teaser' ) {
         $variables['page'] = true;
      }
   }
}


This will remove the title from the view mode teaser.

Edit:

To answer the specific question in the latest comment, how to make the title field manageable in the display UI:

You have to change the field definition in a hook:

function mymodule_entity_base_field_info_alter(&amp;$fields, $entity_type) {
  if ($entity_type-&gt;id() == 'node') {
    if (isset($fields['title'])) {
      $fields['title']-&gt;setDisplayConfigurable('view', TRUE);
    }
  }
}


Don't forget to remove {{ label }} from node twig, so that the title is not displayed twice.