Это связано с тем, что после первой итерации элемент 11 удаляется и переходит ко второму индексу, который становится 17 в списке [5,17,18,23,50]. Лучший способ исправить это - взять список результатов, чтобы вы не должны мутировать "list1"
list1 = [11, 5, 17, 18, 23, 50]
not_needed = {11, 5}
result = []
for e in list1:
if e in not_needed:
pass
else:
result.append(e)
print(result)