undefined указывает на отсутствие присвоенного значения. Переменная объявлена, но ей не присвоено никакого значения. Результат доступа к несуществующему свойству объекта или элементу массива.
null - это явное присвоение значения "отсутствия значения". Разработчик намеренно указывает, что переменная или свойство объекта не имеют значения. Объект, но не примитив по типу (хотя typeof null возвращает 'object', что является ошибкой из истории языка).
javascript