No existen "lenguajes potentes", existen lenguajes potentes para algo donde "algo" es aquello para lo que fue creado el lenguaje en cuestión. Por ejemplo C es potente para programar sistemas operativos mientras que FoxPro no lo es simplemente porque FoxPro no fue creado para eso. Espero que entiendas esta cuestión.
Hay varias formas de clasificar los lenguajes pero la clasificación que estás preguntando es: lenguajes compilados y lenguajes interpretados (hay mezcla de los dos también).
Los lenguajes compilados requieren un programa que se llama compilador, el cual toma el código fuente de un programa y lo traduce a código máquina el cual es directamente ejecutable, es decir, el programa ya compilado no necesita de nada externo a él mismo para ejecutarse (excepto que el propio programa lo requiera, claro), este tipo de ejecutables se suelen llamas "stand alone" ("se sostienen solos").
Los lenguajes interpretados requieren de un programa llamado intérprete que lee sentencia por sentencia del código fuente y las ejecuta sin más trámites.
Cada uno de estos tipos de lenguajes tienen sus ventajas y desventajas.
Los lenguajes compilados tienen la ventaja de ser más rápidos porque el código final puede ser optimizado para un sistema operativo y un hardware en particular, pero tienen la desventaja de que solo se ejecutan en ese SO y en ese hardware. Los lenguajes compilados se compilan *para* un SO y un hardware particular. Si deseas obtener un ejecutable para otro SO u otro hardware necesitas cambiar de compilador (aunque hoy en día hay compiladores que generan código ejecutable para más de un SO, lo cual es una solución a este problema).
Mientras que los lenguajes interpretados suelen no tener esa dependencia hacia un SO y un hardware particular, basta con cambiar de intérprete y ya esta. La desventaja es que la ejecución suele ser más lenta (ya que la optimización corre por cuenta del programador y no puede hacer "ajuste fino") y la dependencia con el intérprete (sin intérprete no se puede ejecutar). Además, estos lenguajes tampoco suelen tener soporte de hardware a menos que se le agreguen módulos externos.
Pero también hay mezcla de los dos. Algunos lenguajes pueden ser semicompilados o semiinterpretados. En este caso hay dos programas, un compilador que genera un pseudoejecutable o "codebyte" y un intérprete que ejecuta ese codebyte. La idea es combinar las ventajas de cada tipo. La compilación permite optimizar mientras que la interpretación permite la independencia entre sistemas operativos.
Como supongo te habrás dado cuenta PHP es un lenguaje interpretado, así también lo es JavaScript. Por otro lado Java es un tipo intermedio, se genera un codebyte y se requiere de un intérprete (llamado "máquina virtual java") para que ejecute ese codebyte. C y C++ son lenguajes compilados, por lo tanto necesitas conseguir un compilador para poder programar en C o C++.
Dejé para lo último tu pregunta más difícil de responder: ¿vale la pena aprender a programar en C o Java?.
Pues no tengo idea

. Y no la tengo porque no sé qué pretendes hacer como para necesitar alguno de esos lenguajes ("la tarea hace al lenguaje y no el lenguaje a la tarea"). Ahora bien, si solo es por aprender otra cosa pues adelante!, aprende lo que quieras porque "lo que no aprendas hoy lo lamentarás mañana" y además te sirve para ampliar tus posibilidades de trabajo.
Ahora bien, si nunca has programado en lenguajes de propósito general (C es uno de ellos) mi personal recomendación es que aprendas Pascal/Object Pascal. Con Pascal puedes hacer lo mismo que con C pero tiene una curva de aprendizaje más pronunciada (además te obliga por diseño a tener buenas prácticas de programación).