Quote: "What actually is this? I have heard it is a DBP wrapper for C++. Is it that or is it a library like the alerago library."
DGDK 2 is a pure DarkBASIC Professional wrapper. DGDK 1 is also a wrapper but it is a bit more distanced from the (current) DBP version; it is basically the source code for the core DBPro dll's from ~2 years ago compiled into static libraries that you can use with C++. The upside is that they give you core access to the internal data structures of DarkGDK / DarkBASIC which isn't available directly in DBPro or DGDK2. With some work you can access the very same function in DGDK2 but you'll have to include additional structure definitions and do some funky typecasting that can blow up in your face if you do it wrong.
Also DGDK2 is slower than DGDK1 and DBPro alike (note: this only goes for calling the functions themselves; the standard elements of C++ are faster than DBPro). For one thing it uses 2 main function calls per function and then some on top of that for security. This is all well with functions like dbLoadObject(), etc. but it does induce a noticable performance hit with ie. dbGetVertexPosition().
You can probably skip DarkBASIC and go straight for DarkGDK if you want to. There are more examples around for DarkBASIC though I believe.
As for learning C++ first, sure, why not. It's quite different from BASIC so it won't be very much easier to have learned that first except for knowing your general way around programming (which you say you already do anyway).
It might be an idea to start with Java to get used to the syntax and object orientation that is found in C++ as well; Java is much more forgiving with memory management; in C++ you have to handle that yourself and errors often result in hard to trace crashes in a completely different part of your program than where the memory transgression actually ocurred.
Quote: "Can you use classes and function overloading and pointers and polymorphisim?"
Yes.
Although not with DarkGDK, as it's a direct wrapper for DarkBASIC it is just as procedural. You can make your own wrapper classes to make an object oriented system however.
"Why do programmers get Halloween and Christmas mixed up?" Because Oct(31) = Dec(25)