So you want a game engine, free, in 2D, with physic capabilities? Do you want access to the engine code or simply using the embedded editor / scripting language is enough? If not, do you prefer one in C/C++, Java, C#, Python? The language is usually very important as a choice for people.
But to be honest, in 2D I don't know what to recommend. LÖVE seems nice at quick glance but I never heard of it. Most 2D games actually use a 3D engine and limit action to one plane. Unity and even UDK can be used to create 2D games, but it's obviously not optimal. What I would personally do is take a 2D graphic library (SDL, SFML, Allegro) and create a quick and simple entity system and also link everything with a physic library (Box2D, etc). Of course, it's a lot more work than using an already existing engine, but it's more dedicated to your needs at the end.
Just for the information, World Of Goo is using SDL for rendering and ODE for the physics, but I just learned that ODE could do 2D physics. He didn't use a pre-made game engine, he made it's own.
Or maybe what you are looking for, as a teacher, if you don't want to teach programming but simply show things, use an already existing commercial game called Algodoo. It's MADE for education, there's even a special education package. It provide you with a framework to create anything in 2D related to the physic without even writing a line of code! Of course, it's not free, but probably the best choice for you. Check this presentation video, at least it convinced me .
If you want free tools to get kids programming, which will allow them to be able to also deploy to mobile devices, your options on "ease of use" are pretty low. Here are some tools that are free that will provide the first two, free and allows distribution to a lot of platforms, but will have a bit of a learning curve to successfully deploy to a mobile device -