Oii, Carlos!
Vamos por partes para tentar esclarecer suas dúvidas:
Criação de li, div, input e p: Quando você está criando elementos como li, div, input e p em JavaScript, é para adicionar dinamicamente novos elementos à sua página. Por exemplo, se você está criando uma lista de tarefas, cada li pode representar uma nova tarefa. A div pra agrupar elementos relacionados, o input pra inserir dados, e o p pra exibir texto. Tudo depende do que você está tentando construir na sua página.
Alteração de id no input: Quando você já tem um input com um id, é importante saber que cada id em um documento HTML deve ser único. Se você precisa alterar o id, você pode fazer isso usando JavaScript, só que é melhor manter um único id por elemento. Se você precisa identificar o elemento de outra forma, considere usar classes ou atributos data-*, leia mais aqui sobre.
Arrow Functions no addEventListener: Arrow functions são uma forma mais concisa de escrever funções em JavaScript. Elas são especialmente úteis quando você precisa passar uma função como argumento, como no addEventListener. Uma diferença importante das arrow functions é que elas não têm seu próprio this, o que significa que o valor de this dentro de uma arrow function é o mesmo do contexto em que a função foi criada. Isso pode ser muito útil em callbacks, como os usados no addEventListener, onde você quer manter o contexto do objeto que está chamando o evento.
Para saber mais:
A título de curiosidade, para entender mais sobre arrow functions e como usar atributos de dados em HTML, confira os seguintes links:
Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!