donde compilar los exploits (con linux), como encontrar un bug, y que idiomas de programación se devería aprender para iniciarse en esto.
Depende de en qué lenguaje esté el exploit. Si está escrito en C en Linux usa cualquier compilador para C por ejemplo gcc. Para encontrar vulnerabilidades se necesita primero saber qué área te interesa: Sistemas Operativos, Aplicaciones Web, Servicios de red, etc. También es igual con respecto a los lenguajes de programación, depende del área de tu interés, digamos que para bugs y exploits en SOs necesitas nociones de ensamblador, C, C++, C# y comprender lo básico de cómo funciona un OS, por ejemplo GNU-Linux. En cambio, si te interesa encontrar vulnerabilidades en aplicaciones web, lo anterior también es útil pero no suficiente, necesitas comprender cómo se estructuran, que tecnologías se utilizan en sus diferentes niveles java, PHP, Perl, .asp, SQL en el caso de servidores y backends; javascript y otros en el caso de los clientes.
Un saludo.