¿De dónde vienen los parámetros en una función de devolución de llamada de JavaScript?

Entiendo la esencia de las funciones de devolución de llamada en que la función se ejecuta nuevamente después de pasarla como parámetro a otra función. Sin embargo, estoy confundido acerca de dónde provienen las variables dentro de la función de devolución de llamada, como se muestra en el siguiente ejemplo de node.js:

router.get('/', function(req, res){
    res.render('index', {});
});

¿Cómo se rellenan las variables req y res? Un ejemplo que explique cómo puedo llamar a res.render (...) sin declarar res yo mismo sería muy apreciado.

Respuestas a la pregunta(3)

Su respuesta a la pregunta