Il faut d'abord distinguer JRE et JDK par la présence de jre ou javac : java runtime environment qui te permet d'exécuter des applications java mais pas de les générer, java compiler lui permet de créer des exécutables. ce n'est pas la seule différence mais c'est la plus profonde selon moi.
Ensuite j2se contient un jdk mais propose d'autres services, regarde ici
http://java.sun.com/javase/index.jsp#javasefamily
A titre complémentaire, je te conseille ce site
http://www.labo-sun.com/