I'll attempt to answer, though admitting partial ignorance:
1) What I don't understand about font sizes, is how you know in the first place the default numbers with which you're going to work. Do you have to assume all fonts will be 16px, and then work based on that fact?
It won't always be 16px, but that's a fairly safe bet in general, so far as I know. If you set the font size on the <body> to 100% as a starting point, it's common to make calculations on the basis of 1em being 16px. Even if that's not the case for a particular user, everything will still be in proportion.
2) Is there a way to impose a default font size to user agents?
You can't govern how people use their computers, nor should you try. Just accept that people will use their browsers as they choose, and try to make content as accessible as possible. If people want larger font sizes, there's not much you can do to stop them. (If they know how to create their own style sheets, those will override yours. But they can also bump up their default font sizes.)
3) When you set a #wrapper that is, say, 98% wide. 98% of what? Is there a number you set in the first place?
98% of the viewport; that is, the browser window. (That's assuming that the #wrapper is the first child of the <body>.)
4) Is it possible to say that a #wrapper is 960px wide and still have a fluid layout?
I don't think so, but set it to something like 60ems and give the inner elements % widths and the wrapper will be 'elestic'—growing wider if font size is increased, and narrowing if the browser window is narrowed to less than 60ems.