Ciao,
leggendo le tue domande mi sono fatto una vaga idea di quello che vorresti realizzare e come analisi preliminare possiamo dire che il software deve essere molto leggero, poiché si tratta di un vero e proprio processo che viene eseguito all'apertura di Windows.
In base a quello appena detto, devi valutare la scelta dei componenti da aggiungere alla tua applicazione, in modo da non superare una certa soglia di utilizzo della CPU e della memoria di sistema.

Per quanto riguarda l'esecuzione del software all'avvio del sistema operativo, se non mi sbaglio, poco tempo fà ho provato ad inserire l'eseguibile all'interno della cartella definita come "
Esecuzione automatica" che si trova in : Start -> Programmi -> "
Esecuzione automatica".

Vorrei fare un controllo nel caso in cui l'utente
volesse riaprire lo stesso programma da un eventuale link sul
desktop per esempio...ossia vorrei poter controllare che il
software non sia già in esecuzione
Per quanto riguarda il controllo se é già in esecuzione un determinato processo, in questo caso il processo avrà il nome dell'eseguibile del software puoi usare una semplice procedura:
Vedi

vorrei che l'icona apparisse sull' IconTray , affianco all'orologio
In questo caso ti consiglio di usare un componente della Società Tempest Software che ho trovato su Torry ma di cui ora non trovo più il link diretto

vorrei che ogni tot di ore mi ricordasse delle scadenze dei
pagamenti.
Puoi avvalerti del componente TTimer.
Se cerchi all'interno di questo forum, troverai sicuramente informazioni su questo oggetto.

Spero di averti chiarito le idee...
Cmq non ti preoccupare che appena ti risponde Alka, tutto ti si illuminerà