Per catturare ogni errore devi usare lo statement Try...Catch, in ongi blocco di codice che potrebbe generare un errore. Per creare la finestra, dato che devono essere più opzioni, ti suggerisco di creare un nuovo DialogBox (Solution Explorer->[Nome progetto]->Add->New Item->DialogBox) e qui disegnare visualmente tutte le parti richieste. Poi scrivi alcune nuove proprieta', come ad esempio Icon (per l'icona, che dovresti gestire con un'ImageList) o Message (per la descrizione del messaggio) nel codice del dialogbox e specifichi tutti i nuovi parametri nel suo costruttore. Dopodichè, ogni volta che si verifica un errore, puoi lanciare la tua finestra, ad esempio così:
codice:
Try
'...
Catch Ex As Exception
  Dim Errors As New dlgErrors(Ex.Message, "Errore in " & Ex.TargetSite, "Warning")
  Errors.ShowDialog()
End Try