Luca, multiple controllers allow you to break your code into logical chunks, so big projects are more manageable. there are a few different options for URL routing to make the URLs your user sees something different from the underlying structure. Take a look in the web2py book for info on the routers. I tend to route a specific controller/function to be the default that services my domain, and then keep the controller/function path for other pages
i have not looked at the default generated db.py in a while....but check the book for the section on how models are loaded. you can create one large db.py, though it is recommended that you split files for code organization. you only need the bootstrap logic once, in the first model file that is loaded (models are loaded alphabetically) hope that helps some! cfh