Which is better, and what is the real difference?
I've been debating which I want to program, and want to make an informed decision.
Applets are nice for the final users especially when they are unsigned, they have (almost) nothing to do but using them adds a non homogeneous "layer" : the web browser. It adds a variant. A given Java program can work on various combinations of operating systems, graphics cards, etc... Using web browsers adds another source of bugs too, look at bad support of applets on Chrome, the changes of the way to access to the OpenGL context in web browsers on Mac OS X... Therefore, maybe use applets only for a game using a few resources and not too much external libraries. Applets work better now than 5 years ago.
Applications are a bit heavier to install, you can use installers like GetDown (a lot of people here like it), IzPack (very professional but needs a real effort to create your own installer with it), Java Web Start (a bit buggy but extremely simple to use) or native installers. When your installer works fine, you will generally have less bugs than with applets because you don't really rely on the web browser except a very little bit for Java Web Start (Chrome adds a scary supplementary warning when the user clicks onto a JNLP link). Don't package your applications into a single downloadable JAR as WinZip might open it which is not what you want (Java Web Start is nice to work around this problem). In my humble opinion, Java Web Start is nice for games in beta version, people automatically get the updates, it is very simple. If it is not enough for you, when your game becomes more popular, switch to better installers. Of course, you have less restrictions when using an application.
You might have more fun with applets, as you can show your progress very quickly to others.
This is true for Java Web Start too.