Hi Kanden,
The friendly URLs are done with smoke, mirrors and redirection. The redirection in the form of Tigers, large amounts of flame and the occasional beautiful woman.
No really the friendly URLs are the result of putting a check in the check box that says "Use friendly URL's' on the host menu. This check box being set true tell the software to use the URLRewrite module in a different way that results in easier to read url's.
You understand right about the default.aspx file. It's used for everything even if you have other parent or child portals they all are generated with the default.aspx page in the root directory. This happens from interaction with the database and the variable called http_referrer at first and then drive by things being passed back to the server from your browser.
A connection to the database gets opened and closed with every access to the page, at least on my installs. There are all sorts of arguments to be made for keeping one connection open but you would then run into a lot of issues of table and row locking problems, out of date data being sent to clients, server resources leaking and more. In general you want to make a quick request to the DB and get a burst of data, process it then burst it back to the DB to do it's thing with the new data. There are also resource issues with the web server, iis, of keeping DB connections open longer than you really need. Especially if you open the connection per session.
There is a little tiny slow down in the response of getting all the data from a DB every time as opposed to having static pages. But if you are not loading thousands of records you will never notice it. Sites that do show large amounts of data from databases generally using paging, showing you the first chunk while pulling the rest in the background.
DNN also uses caching for modules so some of this data gets kept in memory or on disk depending on the setting you are using. This mitigates some of the slow down you would normally see. The first time you access a DNN site after the application starts you will notice it takes it a little bit to show up. This is the code loading the cache and displaying it for the first time. After that first time things are quicker because less info has to be called from the DB.
Hope I helped out a little.
Cheers,