Объясните строчку кода?
Таким образом вызывается анонимная функция. Скобками обрамляем анонимную функцию и c помощью (id, input) вызываем её с параметрами id и input(
function(id, input) {
    input.addEventListener("change", function() {
        localStorage.setItem(id, input.value);
    });
}
)(id, input);
Чтобы было понятно, это можно записать такvar fun = function(id, input) {
    input.addEventListener("change", function() {
        localStorage.setItem(id, input.value);
    });
}

fun(id, input);
Обозначает передачу параметров в самовызывающуюся функцию function(id, input), которая тут вообще ненужна, и не понятно зачем она там.