Ответ 1
Я цитирую
"Самое большое различие между ними заключается в следующем: В сборке отладки генерируется полная символическая отладочная информация, которая помогает при отладке приложений, а также оптимизация кода не учитывается. В то время как в выпуске сборки информация о символьном отлаживании не испускается, а исполнение кода оптимизировано. Кроме того, поскольку символическая информация не выводится в сборке выпуска, размер конечного исполняемого файла меньше, чем исполняемый файл отладки.
Можно ожидать появления смешных ошибок в выпусках из-за оптимизации компилятора или различий в макете памяти или инициализации. Они обычно называются Release - Only bugs:)
С точки зрения скорости выполнения исполняемый файл версии будет выполняться быстрее, но не всегда это будет значительным.
Предоставлено google и пользователем mcdeeiis http://haacked.com/archive/2004/02/14/difference-between-debug-vs-release-build.aspx
Это довольно солидное объяснение для всех языков программирования