Not really sure what your question is, but that bottom line shows the SampleClass instance being casted as an IControl and then assigned to an IControl variable. Actually, the compiler is smart enough to know when a class implements an interface, so the explicit cast is not necessary. You could just write:
IControl c = obj;
It is correct to say interfaces cannot be directly instantiated, as they are not really classes (they are just interfaces that some class must implement). You can then create an instance of a class that implements the interface, then assign that instance to a variable of the interface type. For example, you could have also done this:
IControl c = new SampleClass();
c.Paint();
Now, if you wanted to assign that to an ISurface variable, you would have to explicitly cast it:
ISurface s = (ISurface)c;
I recommend you do some reading (a book or some tutorials online) about object oriented programming, perhaps specifically as it relates to C#.