I understand there are different platforms for java ( Java se,java me, java EE),
What does make these platform differ from each other besides their usage for specific application ( e.g JavaEE is used to build enterprise-level application, Java ME is used to build application for small mobile devices)?
I am just going to guess as i am not sure is it API ?
Java ME (Java Micro Edition) is a version of Java that runs on small devices, such as phones.
Java SE (Java Standard Edition) is the regular Java that you run on your desktop computer.
Java EE (Java Enterprise Edition) is an add-on to Java SE, that adds lots of stuff that is useful for enterprise applications, running on servers.
All the above are just specifications of APIs. There are different implementations: ofcourse Oracle has its own implementation, but for example HP and IBM have their own implementations of at least Java SE and EE running on their own brand servers and operating systems that they sell.
The Java EE APIs are implemented by Java EE application servers such as Glassfish, JBoss, WebLogic, Websphere, Tomcat (which doesn't implement all of it) etc.
Java ME does contain less APIs than Java SE, so in a sense it is a subset. There might also be Java ME-specific APIs which are not in Java SE. I'm not familiar with Java ME so I don't know the details.
Java EE is an add-on to Java SE. You first need to have Java SE installed, and then you can install an application server (such as the ones I mentioned) which will provide you with an implementation of the Java EE API. Java SE is not a subset of Java EE.