¡Hola Gerardo, espero que estés bien!
La diferencia entre __getitem__ y __iter__ es que __getitem__ nos permite acceder a los elementos de un objeto utilizando corchetes e índices, mientras que __iter__ nos permite hacer iteraciones con un bucle for.
En el contexto que has compartido, parece que el profesor ha implementado únicamente __getitem__ para hacer que la clase 'playlist' sea iterable, de forma que cuando se pida el contenido de la 'playlist', se pueda acceder a través de corchetes e índices, como si fuera una secuencia iterable.
Espero que esta explicación te ayude a comprender mejor la diferencia entre estos dos métodos mágicos en Python. Si tienes alguna otra pregunta, no dudes en preguntar.
Espero haber ayudado y buenos estudios!