Это происходит потому, что в случае, если условие 'if' оценивается как true, один из элементов списка удаляется, и размер списка теперь уменьшается, но n остается тем же, а цикл for продолжает повторяться n раз.
Один из возможных способов заставить это работать:
string_intrare = [['Gheorghe', 'Gita', '8', '7', '5.5', '10'],['Vuia', 'Vasile', '4', '10', '10', '10'],['Andreescu', 'Andra', '9', '10', '9', '10'],['Elenescu', 'Elena', '5', '5', '5', '5']]
n = 4
for i in string_intrare:
if (float(i[2]) < 5) or (float(i[3]) < 5) or (float(i[4]) < 5) or (float(i[5]) < 5):
print('List ' ,i , ' has been removed remove' , ' ===== Grade lower than 5')
string_intrare.remove(i)