Most of these requirements can be found in GameMaker or or Construct 2. Some people recommend Unity for this, but even with the new 2d additions to it, it isn't as good for 2d as the others yet(though for 3d it is top notch).
1. GameMaker Studio supports everything you mention out of the box except for lighting/shadowing. There are several tutorials and extensions to get this up and running quickly, or with the "surfaces" GameMaker provides you can easily code your own as well. The sprite system is pretty good, and for batching it has a texture page system that is basically a texture "atlas" setup for reducing texture pages. Shaders are written in the OGLES Language(can't remember exactly which version), because that one is the easiest to cross-compile/convert to all the platforms and is still powerful enough. There is also a particle system included.
2. The whole d&d event system comes in handy. You can use d&d to code some things, but as it gets more complicated you will want to use GML code instead. But the event system is still useful then. You get events for lots of things. Besides almost all of inputs like mouse and global mouse inputs for example, you get things like "out of room", animation end(which happens when a sprite is about to loop the animation), alarms, the "step" events, which include beginning, middle, end so you can force things to happen in a certain order, all the collisions, game and room(level) begin and end, create and destroy events, and custom events as well if you choose to use them. The only thing that I'm uncertain of if you are requesting is collision response. You get the collision event, but you have to decide how to respond to it. There is also implementation of the Box2d physics engine internally if you wish to use it. Look on the showcase at Bullet Bros to see the physics in action. You can see the rest of the showcase too to see examples of nice games done with the software.
3. For the most part, the editors are pretty nice. The couple things that need improvement is the room editor and the GUI, but they are both workable and have never gotten in my way. The GML scripting language is kind of a c-like language. I picked it up very quickly coming from having learned C++. You can also use the Drag&Drop system for coding, but it gets unwieldy pretty quick if you get complicated. There is nothing stopping you from using both at the same time, even in the same event. For the most part, the GML language allows you to do everything you need as far as 2d and even 3d(which is in some ways a tacky add-on but has gotten some nice games made with). It isn't really an OOP language, but you have access to data structures and other similar things you need. There is also a parent/child system, where you make objects with these relationships, and in events and code, you can access parents to get included all the children. Say you can have a single parent bullet, and then several children bullets, and if you put a collision event between an enemy and the parent bullet, it will happen for all the children. In fact, you can get different parameters using variables. Say in that collision, you use the variable "strength" to decrease the hp of the enemy, then in each child, you can set different "strength". You can even use a parent enemy instead, and then each enemy can do whatever he wants and still responds the same to the parent bullet object.
Sorry for the long post guys, but I heavily recommend GameMaker, and these are my reasons why.