1. In an abstract class, you can have some of the methods with their default implementation but in interface all methods should not have any implementation. The main difference between both is that interfaces are best for generic programming. You just define the interfaces with methods which must be there let the developer decide which method of an interface should have which functionality according to his need. The abstract class can't have such functionality just because they may have the implementation of at least one method. So, in that case an abstract class may not be able to serve for purely generic level programming.
2. Interfaces are built with the thing in mind that all methods in an interface should be implemented by the class which is inheriting those interfaces; that is why all methods in the interface are by-default set as public so that they can be accessible with the implementer class. Let's say if a method's access modifier is private, then it won't be accessible by its inheriting class and also there is no reason for such a method to be in the interface as it has no implementation as well. So there is no logic to have in an interface which is never going to be implemented by the inheriting class and which have no implementation as well. But if there is such an interface which have lots of methods and you think that not every class needs all those methods then it is a good idea to break that interface WISELY to create multiple interfaces so that each interface may have only those methods which SHOULD really be there.
3. the following statement is possible.
Interface i = new Class1();
The following statement is possible only if the Class1 implements the interface.
Interface i = (Interface) new Class1()