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

try:
    for i in count(0): # вот этого
        a = data[i]    # и этого
        if data.count(a) == 1:
            data.remove(a)
        print(a, data)
except IndexError:
    print(data)