There is no difference in the created instance - that is the right hand side of the equals - it's the variable on the left that is different. Because the variable is reference to the interface rather than the concrete class, you can only compile statements that use the interface properties, methods, and fields - you cannot use any methods with are specific to the List<T> class despite the instance the variable actually refers to being a concrete List<T> object.
This is because as far as the compiler is concerned, the variable may contain any class that implements the IList interface, and not all of them will be List class instances.
It's like saying a Car is a Vehicle:
Vehicle v = new Car("Ford", "Mustang");
When you use the Vehicle next time, you can't even depend on the number of wheels, because I could also say:
v = new Motorcycle("Yamaha", "R1");
If I say:
Car c = new Car("Ford", "Fiesta");
Then I can depend on the wheel count, because the compiler will complain if I try to say:
c = new Motorcycle("Honda", "Fireblade");
Because it
knows that a Motorcycle is not a Car.