Как правильно построить условия на проверку IndexOf?
Не надо никакого indexOf:

const text = [ 'hello, world!!', 'fuck the world', 'fuck everything' ];

$('селектор заголовков').click(function() {
  const index = $(this).data('index') || 0;
  $(this).text(text[index]).data('index', (index + 1) % text.length);
});
https://jsfiddle.net/v0q9ys31/
В чём ошибка исходного кода:
Во всех заголовках присутствует в конце зачем-то единица.
И поэтому при очередном клике, раньше других срабатывает одно и то же условие,
где ищется '1' и заголовок становится 2 - click again!1

Как лучше
Где-то сохранять, какой из заголовков виден сейчас.
Не текст заголовка — тексты могут частично совпадать и indexOf() начнёт ошибаться — а номер заголовка.

0xD34F подсказал как всегда красивый, правильный и лаконичный вариант.

Ещё можно держать переменную, указывающую на очередной заголовок:const headers = ['Мойте руки', 'Сидите дома', 'Помогайте соседям', ];
let currentHeader = 0;
$('#header').on('click', function() {
  $(this).text(headers[currentHeader]);
  currentHeader += 1;
  currentHeader %= headers.length;
});