In my testing with Unity 2018 (and it is different in Unity 2020 according to the comments), I found DEBUG is true in the editor and during development builds (it is true during the build so the code is compiled into the build). DEBUG is not true during release builds.
DEVELOPMENT_BUILD is never true in the editor except during development builds (so the code is only runs in development builds, never in the editor). I'm not sure whether editor callbacks (surrounded with #if DEVELOPMENT_BUILD) would run while compiling a development build.
This preprocessor directive is not documented. Since it is so highly used and has been a part of Unity for so long, I reported the omission as a documentation bug. If they don't add it to the documentation soon, it probably meansbut they would advise we don't usemay not consider it for some reasontheir responsibility to document .NET conventions.