Это популярная ошибка. Никогда не меняйте ту последовательность, по которой итерируетесь.
Ваш код обрабатывает первый элемент, и он знает, что после этого он должен перейти ко второму элементу. Он так и делает. Но после удаления элемента все последующие элементы сдвигаются. И на втором месте у вас стоит уже число 3. А число 2 ушло на первое место, которое уже было обработано, и к нему интерпретатор уже не вернётся. Поэтому двойка осталась необработанной.
Решить проблему можно, если итерироваться по копии последовательности, а удалять - из оригинальной.
data = [1,2,3,4,5]
for a in data.copy():
if data.count(a) == 1:
data.remove(a)
print(data)