U C#-u kao i u Javi, sve klase su izvedene iz Object. Tako da možeš da koristiš listu koja sadrži Object-e i u nju da stavljaš šta hoćeš. Posle kad "vadiš" objekte, možeš da koristiš "Reflection" da otkriješ koji je tip objekta u pitanju, ako nisi siguran. Jadna je to zamena za templates, ali šta da radimo.
A za brisanje iz liste, dobro si pretpostavio. Samo prekini reference i GC će da ga pošalje Bogu na istinu...