Как объяснить работу метода indexOf( ) в данном случае?
Widget содержит подстроку id. Что не ясно?
А насчёт and. Так вы не там добавили символ.

Рекомендую поспать ))
console.log('Widget with id and'.indexOf('id'));
Widget with id and
Хотите искать слова, тогда так
const sentence = 'Widget with id and';
const words = sentence.match(/\w+/g); // ['Widget', 'with', 'id', 'and']
console.log(words.indexOf('id'));