Quali sono le differenze tra HLD e LLD in un ciclo di vita di sviluppo del software?

Dipende dalla complessità dei sistemi.
Per un semplice sistema non distribuito l'HLD può essere solo la stratificazione logica e l'interazione tra loro e l'LLD può essere la struttura effettiva di classi e metodi in quei livelli.
Per un grande sistema distribuito di tipo SOA con diciamo 50 componenti l'HLD potrebbe essere i componenti coinvolti e l'interazione tra quei componenti (flusso di informazioni) e l'LLD potrebbe essere come i proprietari dei singoli componenti progettano la loro parte dell'intero puzzle.
Ci possono essere HLD e LLD in LLD ricorsivamente in base a quanto grande è il problema su cui si sta lavorando.

Prendendo solo un esempio molto semplice.
Un sistema di registrazione/accesso in un'applicazione web.
In forma di testo HLD e LLD potrebbero essere vagamente come
HLD
1. Ci sarebbe un livello UI per prendere l'input dall'utente
2. Ci sarebbe un livello di servizio per fare le convalide, fare la crittografia della password, l'autenticazione e la comunicazione con il livello di archiviazione
3. Ci sarà un livello di archiviazione per memorizzare le registrazioni e per confrontarle con i login.

LLD
1. UI sarà 2 caselle e 1 pulsante di invio
2. Il servizio sarà UserService con metodi come
register(User user user)
login(String username, String password)
3. Lo storage sarà un db relazionale e ci sarà una tabella chiamata user con campi come id, username, password.