É possivel criar rotas na mão(sem o express)?

tem como criar as rotas do servidor se usar o express? queria entender como ele funciona por trás, como ele cria as rotas

O node possui um módulo “built-in” para tratar HTTP, porém, para tratar requisições REST ficaria mais complicado sendo necessário fazer tudo na mão mesmo (como vc mencionou). Veja algumas fontes:

Node Http Module
https://nodejs.org/api/http.html#http_http

Aqui mostra como usar o HTTP e recuperar query params da URL e outras coisas
https://www.w3schools.com/nodejs/nodejs_http.asp

Diferença entre Node e Express

Nesse último link tem a seguinte explicação:

Web Frameworks

Algumas tarefas comuns no desenvolvimento web não são suportadas diretamente pelo Node. Se você quiser que a sua aplicação possua diferentes verbos HTTP (por exemplo GET , POST , DELETE , etc), que gerencie requisições de diferentes URLs (“rotas”), apresente arquivos estáticos ou utilize templates para mostrar as respostas (response) de maneira dinâmica, você não terá muita praticidade usando apenas o Node. Você terá duas opções. Escrever o código por conta própria ou então evitar todo esse trabalho de reinventar a roda ao utilizar um framework.