zip() попарно объединяет элементы последовательностей. И т.к. в нашем случае в первом списке лишь один элемент — [0] — итерация будет проходить только него
В lst[42] мы пытаемся обратиться к элементу с индексом 42 в переменной lst. Однако до этого она нигде в коде не определена, поэтому возникает ошибка NameError
При использовании * перед итерируемым объектом, таким как список, происходит распаковка элементов списка и их передача как отдельных аргументов. В данном случае функции print()
По итогу [1] будет распаковано в 1, а [2, 3] в 2 и 3. Отсюда и ответ — 1 2 3