Realmente es lo que te ha dicho Tom, pero por darte una respuesta un poco menos arisca y comprensible, ya que supongo que eres principiante...
Digamos que las que has escrito que empiezan por minúscula son solo variables "normales", solo albergan un valor, en esos casos... un solo byte, un solo long, un solo boolean... Las operaciones que podrás hacer con esas variables son muy limitadas. Poco más que leer y asignar el valor.
Por otro lado, al declararlas con mayúsculas, las estás declarando como un objeto de dicho tipo. Es decir... instancias un objeto de la clase Long por ejemplo.
Diferencias... pues que estos objetos tendrán funciones pertenecientes a su clase. Por ejemplo, con un objeto de tipo Long podrías hacer esto:
Long l;
String str;
str = l.toString(); // Así haces un cast directamente desde el objeto.
str = l.toOctalString(); // Así estás obteniendo el número "traducido" a octal.
Float f = l.floatValue(); // Así estás haciendo un cast a float...
Como verás, todo eso no lo puedes hacer con una variable de tipo long, ya que con esa variable solamente podrías leer el valor o asignarlo. Podrías convertirla usando los métodos estáticos de la clase Float...
Otra ventaja que tiene, que puede venir muy bien en ciertos casos, es que a un objeto de estas clases le puedes asignar el valor "null", cosa que no puedes hacer con las variables "normales".
Eso hace que a veces con las variables tengas que usar valores "predeterminados" para señalar que el valor no es válido, como el típico -1 para decir que cierta variable no ha sido leida aún... o que ese valor es incorrecto. Usando los objetos, podremos asignar el valor null y así no tendremos que "sacrificar" ningún valor de los que pueda tomar el objeto, ya que a veces es engorroso o ineficaz.
Espero que mas o menos se te aclaren las dudas ; )
Suerte!