Метод removeObject:(id)obj
работает не с индексами, а с реальными объектами.
Вы должны использовать вместо
[list removeObjectAtIndex:0];
[list removeObjectAtIndex:1];
Если вам интересно, почему он работает с 0
, я думаю, что 0 == NULL == nil
, который является указателем на нулевой объект, поэтому он интерпретируется как нулевой объект, а не как индекс (он не будет вести себя так, как вы ожидать).