For the first question, I don't know what would be best. dbText() would probably be better, because you can position the text in the same command that you print. As for detecting the end of a line and wrapping, I don't know what you should do.
On question two, DS dev isn't like working with Windows, or for that matter PC. It's quite a bit more difficult to understand, because you are working directly with the hardware, rather than with DarkGDK, which then controls DirectX, then the graphics card's driver, which gets to hardware. That being said, it's still not as complicated as Direct3D providing you use DevKitARM (A compiler like the one that comes in Visual Studio, but designed to compile C into code for ARM7 and ARM9 cpus, instead of the typical x86 CPU architecture of a PC running Windows) and PAlib (the NDS equivalent of DarkGDK, though much lower-level control, less is done for you). All of that established, homebrew development requires expensive hardware that isn't cost-effective, unless you REALLY love making DS applications.
Some sites to check out include:
http://www.devkitpro.org/
http://www.ndshb.com/
http://forum.palib.info/
My site, for various stuff that I make.