Hola:
En http://www.geocities.com/chuidiang/java/sockets/socket.html tienes un ejemplo sencillo de socket con java.
Para conectar dos programas, uno de ellos (al que se llama servidor) necesita conocer el numero de puerto al que va a atender. El otro (al que se llama cliente), necesita saber la IP donde está el servidor y el número de puerto que está atendiendo.
Los Applet sirven para "meter" un pequeño programa java dentro de una página web y "ejecutarlo" dentro de un navegador. No creo que sea tu caso.
En cuanto a los Threads, sirven para que un programa java esté haciendo varias cosas "simultaneamente". Una posible aplicación, como dices, es para que un programa servidor de sockets pueda atender a varios clientes a la vez. Efectivamente, el Thread no tiene nada que ver con la conexión. De todas formas, un Servidor podría atender a varios clientes por otros mecanismos, los Threads no son la unica opción.
Se bueno.