None of these have any bearing on XAML, they are all straight VB related and control how functions and so forth are going to be available.
Public and Private are mutually exclusive: If an item is Public then it is visible to all, both within this class and outside it. Private means that the item is only visible within the class. Functions in different classes cannot access it at all.
There are also Friend and Protected which control the access level as well: Time to do some reading!
MSDN[
^]
Shared is a modifier which means that the itme is common to all instances of the class - no matter if there is zero or seven instances of a class, they all refer to the same item. If you created a Shared variable, then the value is the same regardless of which instance you are in. Again,
MSDN[
^] can help.
WithEvents allows methods hanlde events raised via the variable. Given that you do not understand the difference between Public and Private yet, I won't go into details as I don't want to confuse you, but when you are ready, look at
MSDN[
^] again.