Hai sicuramente sbagliato a chiudere il blocco for... così sicuramente non ha senso perchè nella stessa posizione dell'array crea prima una cella con il cursore che punta alla successiva e poi una "vuota". Se invece sposti la graffa subito dopo il rigo in grassetto allora crea una lista vuota in cui ogni elemento punta al successivo e l'ultimo ovviamente a null.
Non so perchè la sintassi ti sembra "particolare", forse per il new dopo il punto? da quanto ricordo Cella è una classe interna e quindi per istanziarne un oggetto bisogna creare prima uno di tipo CursorList (a cui in questo particolare caso non serve dare un nome). Spero di essere stato di aiuto...
Scusa dov' è l' errore di chiusura della graffa? C' è un blocco static aperto e poi chiuso con un' istruzione for senza parentesi perchè contiene una sola istruzione...comunque il senso è quello che hai detto tu..
spazio[i] = (new CursorList()).new Cella(null,new Cursore(i+1));
usa questa sintassi perchè cella è una classe interna, e non può esistere se non esiste un oggetto della classe ospitante, perciò viene creato una nuova CursorList e su questa viene creato l'oggetto cella... siccome è un'inizializzazione viene impostata a null, e ogni cella ha un cursore che punta a quello successivo... l'ultima cella viene inizializzata a null,null perchè non contiene ancora nulla e non ha un elemento successivo..