Oba podejścia różnią się między sobą w sposobie zarządzania pamięcią. W skrócie, to w kodzie zarządzalnym nie martwisz się o to kiedy zostanie zwolniona pamięć, która wcześniej została przez Ciebie zaalokowana. Tym zajmuje się Garbage Collector. Natomiast w kodzie niezarządzalnym to programista jawnie alokuje pamięć (operator new, calloc) i musi ją zwolnić (operator delete, free).
Dodatkowo pisząc kod zarządzalny (VB, C#, C++) mamy do dyspozycji bardzo obszerny zestaw klas i komponentów (.NET CF), które można w łatwy i szybki sposób wykorzystywać. Natomiast w kodzie niezarządzalnym (głównie C++) większość rzeczy musimy robić samodzielnie przy użyciu WinAPI. Osobiście wydaje mi się, że pisanie w .NET CF jest znacznie bardziej przyjemne, efektywne i efektowne. Oczywiście z poziomu kodu zarządzalnego można odwoływać się do kodu natywnego (WinAPI) przy użyciu PInvoke.Więcej na temat różnic i korzyści z wykorzystania każdej z technologii można znaleźć na stronie MSDN lub innych dotyczących tej tematyki.
Co do samych pluginów dla today screen'a, to pisze się je głównie w kodzie niezarządzalnym, czyli przy użyciu WinAPI. Przykład takiego prostego pluginu można znaleźć po zainstalowaniu SDK dla Windows Mobile w katalogu:
\Program Files\Windows Mobile 6 SDK\Samples\PocketPC\CPP\win32\memwatcher\
Projektu ten może posłużyć jako szablon do własnego projektu plugina.
Istnieje również sposób na stworzenie plugina w kodzie zarządzalnym i można o tym przeczytać w artykule na MSDN (
http://msdn.microsoft.com/en-us/library/ms839442.aspx). Osobiście jednak z tej metody nie korzystałem.