(a.) Just means that you don't have to put static in front of an inner interface. It can always be referenced, while an inner class will produce compile-time errors if it's used outside of the classes unless it's static. See first code snippet attached.
(b.) This seems to be false, as I can do the following without any errors:
class MyClass1 {
public static class MyInnerClass1 {
public static int a = 0;
public static void method() {
}
}
}
public class WhiteMage {
public static void main(String[] args) {
MyClass1.MyInnerClass1.a = 45;
MyClass1.MyInnerClass1.method();
}
}