Ok, iniziamo a sfoltire/suddividere gli argomenti.
Questi sono i principi basilari/fondamentali della programmazione ad oggetti. Vanno assolutamente compresi bene e a fondo ..... senza, vai davvero poco lontano ....
Questi sono certamente molto importanti. Le asserzioni un po' meno, sono usate più marginalmente e in scenari particolari.
Questi sono tra gli argomenti più avanzati di Java e del framework standard. Se sei agli inizi ovviamente non si può pretendere che li conosci tutti e in profondità ma prima o poi vanno affrontati. Vedili nell'ordine indicato.
Queste sono feature introdotte in Java 5 (ce ne sono altre comunque di questa release: for-each, auto-boxing/unboxing, varargs, static import).
Java 5 è del 2004, quindi queste feature ormai fanno parte del "background" che qualunque programmatore Java "serio" deve avere. Ovviamente, idem come sopra, se sei agli inizi è sufficiente che su questi argomenti hai almeno le idee chiare su cosa sono e come si usano perlomeno a livello basilare/tipico.
Queste parti del framework sono abbastanza importanti, specialmente il input/output almeno quello basilare (esistono anche le API NIO e NIO2 ma sono molto più particolari e avanzate).
Queste sono nuovissime feature di Java 8, che è ancora poco conosciuto e sfruttato (specialmente a livello aziendale!). Ti direi di lasciarle per ultime oppure addirittura di "dimenticarle" per un po'.
Queste sono certamente "interessanti" ma decisamente meno importanti/urgenti di tutte le altre. Per le interfacce grafiche potresti iniziare anche solo con Swing. JavaFX è molto recente e inoltre ha avuto una storia particolare e discontinua, con cambiamenti anche radicali.