a = [1, 2, 3]
# Хотим добавить в список l элемент равный списку a.
l = [a]
# Изменяем список a и смотрим на список l.
a.append(4)
print(l) // [[1, 2, 3, 4]]
Получается, что в списке l содержится именно ссылка на список a,а не эквивалентный ему список. Если бы мы хотели добавить в список l список эквивалентный a, то как раз необходимо использовать именно copy(). Т.е. так:
a = [1, 2, 3]
# Добавляем в список l элемент равный списку a через copy().
l = [a.copy()]
# Изменяем список a и смотрим на список l.
a.append(4)
print(l) // [[1, 2, 3]]
Получается, что в списке l содержится именно ссылка на список a,а не эквивалентный ему список. Если бы мы хотели добавить в список l список эквивалентный a, то как раз необходимо использовать именно copy(). Т.е. так:
Надеюсь, этот пример внесем немного ясности