Hola:
null es null, es decir, sin valor, no un 0, sino sin valor. Es válido si por ejemplo todos los valores son posibles (incluido el 0) y usas null como "sin valor".
Double con mayúscula es una clase, double con minúscula es una primitiva. double no admite null y hay que darle un valor. Double admite null, pero consume más memoria y tiene muchos métodos que double (al no ser clase) no tiene. Sin embargo, con Double no se puede operar (multiplicar, sumar, etc) mientras que con double sí.
Usa Double si quieres guardar estos en algún sitio que admita Object (ArrayList, Hashtable, LinkedList, etc) o necesitas tener la posibilidad de que sea null. Usa double en cualquier otro caso, ya que es más eficiente y puedes hacer operaciones con él.
Hay diferencias similares entre int e Integer, char y Character, Long y long, Float y float, etc.
Se bueno.