What is a placeholder?
In the render pipeline placeholdering is used together with lazy building, see this example from the status messages:

\Drupal\Core\Render\Element\StatusMessages

  /**
   * #pre_render callback to generate a placeholder.
   *
   * @param array $element
   *   A renderable array.
   *
   * @return array
   *   The updated renderable array containing the placeholder.
   */
  public static function generatePlaceholder(array $element) {
    $element = [
      '#lazy_builder' =&gt; [get_class() . '::renderMessages', [$element['#display']]],
      '#create_placeholder' =&gt; TRUE,
    ];

    // Directly create a placeholder as we need this to be placeholdered
    // regardless if this is a POST or GET request.
    // @todo remove this when https://www.drupal.org/node/2367555 lands.
    return \Drupal::service('render_placeholder_generator')-&gt;createPlaceholder($element);
  }


Then, before caching, the renderer puts instead of the content a static placeholder, which will be, on delivery, replaced with the actual content from the lazy builder.

The placeholdering is done here right away, see the last comment in the code. Which is good for demonstration purpose. If you run this code the result will look like this:

&lt;drupal-render-placeholder callback="Drupal\Core\Render\Element\StatusMessages::renderMessages" arguments="..." token="..."&gt;&lt;/drupal-render-placeholder&gt;


By the way, the content of the placeholder tag in the markup is not important, it only has to be unique to be replaceable. The details are for debugging purpose only. The response event subscriber uses the information attached to ['#attached']['placeholders'].

A placeholder strategy is for example BigPipe, which uses another strategy to deliver the placeholder content after page load.