I was wondering, are dev downloads always as complete as their regular counterparts?
I assume you're referring to package names like seen in Debian and Ubuntu.
-dev suffix for packages signifies that it contains files related to development using the non-suffixed package.
For example, the package
zlib1g-dev contains the files you need to create applications using
zlib1g just contains the library so existing applications can use the functionality within. Compilation requires the -dev files, because the compiler has to know where the functions come from, but once the program is compiled, only the regular package is needed, because the compiled application knows to load the library and use the functions within.
Unless you're manually compiling applications that use a library, you generally have no use for the
-dev packages - you will want the non
-dev packages instead. However, if you are compiling applications, you will want them both - the
-dev package doesn't contain the library itself (but it usually depends on the library, so you'll get it that way).
The packages ending in
-dev contain the headers and static libraries used when building an application that makes calls to that library. This may be enough for you if you are building an application from source, and you want to compile the library in statically.
However all the applications you install from packages will be using the shared libraries, which are not provided by the
-dev packages, so you will need to install the base package as well.
Almost all library packages which end in
-dev have a dependency on the base package, so if you select
libpng-dev and choose to install it, your package manager should download
libpng automatically. If you download
libpng-dev yourself, and try to install it, the install will probably fail since it needs
libpng specified as well. There are usually command-line switches to force an install without checking the dependencies, but they are rarely used and not recommended.
In summary: You should really download the base package as well as the
-dev one, but usually the package manager will take care of that for you.