Se domandi quale sia la procedura più affidabile ti rispondo che incorporare le immagini nell'eseguibile é sicuramente la soluzioni migliore per due pricipali motivi:
1. L'utente non vede la cartella con le immagini e quindi non c'é il rischio che vada ad intaccare qualche files

2. Ogni volta che vai a richiamare un'immagine devi usare il metodo LoadFromFile, che sicuramente in un contesto con tanti files appesantisce, ma non di molto, l'applicazione.

Inoltre, pensando al mantenimento del software, se inserisci una nuova immagine in un eseguibile aggiornato, all'utente devi anche passare l'immagine e quindi nel file di installazione dovresti fare un passaggio ulteriore.

Nelle mie applicazioni, utilizzo il componente TImageList per ogni "categoria" di immagini e a run-time vado a prelevare l'indice dell'immagine che mi interessa.
Ho riscontrato che questo metodo é molto semplice e sicuramente più veloce, l'unico inconveniente é dato dalle dimensione dell'eseguibile che aumentano in modo proporzionale al numero di immagini inserite.