Seguramente para esas preguntas tienes una respuesta por cada programador que te conteste, así que te voy a contestar lo que yo pienso, desde mi experiencia como programador (más de 20 años), utilizando múltiples lenguajes (C++, Java, PHP, Javascript, Objective C, ...) y frameworks (Symfony, AngularJS, ...)
A la primera pregunta, la diferencia entre un lenguaje de programación y otro está fundamentalmente en el sistema que quieres construir. Así, si tu sistema requiere solucionar problemas de concurrencia, un lenguaje como Go es ideal. Si necesitas realizar muchas operaciones de entrada/salida (accesos a bases de datos, ficheros, ...), nodeJS es muy fuerte (por su estilo asíncrono). PHP es un lenguaje que lleva mucho más tiempo entre nosotros, por lo que hereda algunas deficiencias (que se han ido solucionando más o menos), pero por otra parte puede resultar mucho más fácil de aprender que otros (además también es más fácil de encontrar buenos programadores con experiencia, por lo que si eres un gestor de proyectos, puede ser también importantes en términos económicos). También hay que tener en cuenta que, al tener cada lenguaje sus peculiaridades, no vas a pensar de la misma forma al diseñar una solución por ejemplo con javascript/nodeJS, que es asíncrono, que con por ejemplo PHP, que es síncrono. Por último, en cuanto a rendimiento, como decía al principio cada lenguaje tiene sus puntos fuertes, pero en términos generales es posible configurar un sistema en cualquier lenguaje para que tenga el mismo rendimiento que otro (eso sí, puede que cueste más en términos de hardware o en tiempo de diseño). Para terminar de contestar a esta pregunta, PHP y javascript son fáciles de aprender, pero son lenguajes antiguos que pueden hacer que un programador principiante adopte ciertos "defectos". Aunque cueste más, yo empezaría con un lenguaje como Java, mucho más completo y con unas reglas más definidas.
Segunda pregunta. Programar algo desde cero tiene dos ventajas inmediatas: aprendes muchísimo más (sobre todo de tus errores) y te produce mucha más satisfacción. Además, hay sistemas/webs que son imposibles de crear con CMS, y otros que no podrían explotar todas sus posibilidades encorsetados dentro de las restricciones de un CMS. Por ejemplo, le doy un premio al que me haga una web de apuestas con Wordpress. Eso sí, tampoco hay que reinventar la rueda, y una vez que ya hayas hecho tu proyecto de prueba/educación desde cero, yo utilizaría un framework, que me dé las cosas básicas ya hechas.
Tercera: es tan posible, que de hecho Drupal fue rediseñado para utilizar componentes del framework Symfony. Y es bastante común añadir funcionalidades que el CMS no te da utilizando frameworks, tanto de servidor como de cliente.
Cuarta: los frameworks javascript permiten por un lado, por su característica de framework, no repetir cosas que ya alguien ha hecho y están suficientemente probadas, y por otro hacer tu código más modular y mantenible (hasta cierto punto evita el llamado "código espagueti"). Además, suelen estar preparados para funcionar en diferentes navegadores y versiones de los mismos, algo (como muchas otras cosas más) que si lo programas tú "a pelo", te vas a tener que pelear con ello. De todas formas, también está el problema de que con los framework tipo AngularJS la gente piensa que todas las aplicaciones webs son SPA (Single Page Application), y acaban desarrollando webs muy malas en usabilidad y código. Hay aplicaciones web que son claramente SPA (por ejemplo, una web de gestión de facturación), y otras en los que será posible utilizar un framework dado para parte de la funcionalidad, pero no para toda. Afortunadamente también parece que la dirección que están siguiendo estos frameworks, orientándose más a componentes reutilizables (por ejemplo la versión 2 de AngularJS o React), los alejan más del modelo SPA y se acercan más a una programación/diseño parecida a los framework de servidor.
Espero que más o menos te haya aclarado algo, si tienes dudas o quieres ampliar información sobre algo, comenta aquí.
Saludos.