Зачем различать копии в C#
Две переменные могут указывать на один и тот же объект. Изменение через любую из них видно везде, потому что данные лежат в одном месте. Это удобно, когда объект один на всю программу и все должны видеть актуальное состояние.
Иногда нужна отдельная копия: черновик и опубликованная версия, исходный профиль и временная правка для расчета. Тогда требуются два независимых экземпляра с одинаковым или близким содержимым на момент копирования.
Путаница между «общая ссылка» и «своя копия» приводит к трудным ошибкам: правка «копии» меняет оригинал или, наоборот, две переменные показывают разные данные, хотя ожидалась синхронизация. Раздел про значения и копирование учит явно выбирать нужный вариант и проверять, что внутри объекта не осталось неожиданно общих частей.