|Also what is a symbol anyway?|
"Symbol" is a generic term for an internal compiler reference to a function or global or static object. Think of it as the name that the compiler gives to the function or object.
|Under what circumstances would someone need these files.|
When making release builds, it's common to not include debugging symbols in the executable, to reduce bloat, not to mention that debuggers tend to get confused when looking at optimized code, so there's not much point in leaving them. VC++ can put the debugging symbols in separate files, which gives the best of both worlds.
Like I said, you only need them if you intend to debug the executables. It only makes sense to have them around if you have a good understanding of the binaries they apply to, such that you can tell what might have gone wrong by looking at the call stack with a list of function names rather than hex addresses, and/or you have the sources for the executable.
|can I turn off just those warning messages without losing ALL warning messages?|
Not as far as I know. The debugger will only complain about being unable to load debugging symbols -- meaning if you can turn those off, you'll turn off all warning of the same type, meaning you won't know if your
debugging symbols got loaded -- or about not finding dynamic libraries and such. It really isn't stuff you can't live without. I don't think I've ever looked at the debugger output, actually.