Понять язык c# (да и вообще ООП, наверное)?
Боюсь все это к ООП не относится. Статические классы и вложенные классы — это пережиток других концепций, но не ООП.
Почему (?) мы можем объявить объект экземпляра вложенного класс (В) вот так: 

new A.B()

Класс В не является статичным же. 
И почему (?) мы не можем его определить вот так:

A a = new A();
new a.B(); 

при создании экземпляра класса используется его полное имя, даже если он объявлен внутри другого класса.
статичность класса здесь не причем. класс B содержится в описании класса A и никак не связан с его экземплярами.

>Для чего нужны статичные классы? Наследовать и создавать объекты нельзя же.
Это экзотическая альтернатива неймспейсов? Что можно с ними делать? 

они необходимы при создании, например, Extension Methods.
public static class MyExtensionProvider
{
 public static void DoSomething(this Object targetObject)
 {
 return;
 }
}


про оператор as уже ответили.