How do I find the correct plugin?
In the specific example you make, there aren't plugins involved. The hook in invoked from NodeViewBuilder::renderLinks(), which executes the following code.

  $links = array(
    '#theme' =&gt; 'links__node',
    '#pre_render' =&gt; array('drupal_pre_render_links'),
    '#attributes' =&gt; array('class' =&gt; array('links', 'inline')),
  );

  if (!$is_in_preview) {
    $entity = Node::load($node_entity_id)-&gt;getTranslation($langcode);
    $links['node'] = static::buildLinks($entity, $view_mode);

    // Allow other modules to alter the node links.
    $hook_context = array(
      'view_mode' =&gt; $view_mode,
      'langcode' =&gt; $langcode,
    );
    \Drupal::moduleHandler()-&gt;alter('node_links', $links, $entity, $hook_context);
  }
  return $links;


To know if a plugin is involved, you need to read the documentation. Plugin API in Drupal 8 give the general documentation, but then you need to read more specific documentation pages, for example Block API in Drupal 8.
A plugin could be annotated, so in some cases you can find any plugin implemented by Drupal core by looking at the classes annotated with a specific class, which is what happens with form input elements, which are classes annotated with \Drupal\Core\Render\Annotation\FormElement. The documentation page gives a list of the classes annotated with that Annotation class, so you can find any plugins of that type.

Then, as @CLive said, if you are simply wondering if you should use a hook, just look at the documentation page for that hook: If it has been deprecated, the documentation reports that, and tells you exactly what you should use: a different hook, a plugin, a specific class.
Also, as said from @mradcliffe, change records reports the changes done in Drupal, and for which version. They are helpful if you want to look at the changes that could interest the code you are writing.