la premier et la deuxieme question sont plus ou moins les memes : on doit compiler un code quand on souhiate obtenir un
executable, cad un programme directement en langage machine qui fonctionne de facon autonome. php ne fonctionne pas sans serveur, parce que son fonctionnement est intimement lie a celui du serveur. un programme ecrit en c++ ( comme word, linux,... ) fonctionne en s'executant directement sur l'ordinateur, ce qui leur permet accessoirement d'etre beaucoup plus rapide. l'avantage des langages de scripts est qu'ils sont plus souples, et qu'ils peuvent facilement etre melange avec autre chose : flash pour action script, HTML pour PHP,.. meme si je crois ( a verifier ) qu'il y a une possibilite de dompiler certains programmes PHP.
mais tu verras en fait que la notion de compilation d'une part est un peu plus complexe que compile / pas compile, et d'autre part pas forcement lie intrinsequement au langage, meme si c'est generalement le cas dans la pratique.
pour le C/C++, c'est du compile, c'est meme presque le degre absolu de la compilation, puisque c'est un langage "proche de la machine", et il est a typage statique, et meme assez stricte, justement parce qu'il utilise beaucoup d'acces direct a la memoire, et que c'est assez dangereux ( a tu deja eu une erreur "access violation fault, la memoire ne peut pas etre read" sous win ? c'est un pointeur mal verifie...
le java est statique aussi, il me semble, et il est a moitie compile.. cad qu'il ya une forme de compilation ( qui rend le code plus rapide ) mais qui ne donne pas directement du langage machine mais un truc bizzare qui necessite le java runtime pour fonctionner. cela permet a un meme programme java
deja compile de fonctionner sous windows et linux. en C, il faut compiler le code sous chacun des systemes pour obtenir autant d'executable differents.
le python, connait mal, mais il me semble que c'est aussi un langage de script, donc pas compile a priori, mais je ne le jurerais pas.