I actually already have unity, but I'm having trouble figuring out how to use it very well, which basically means I have absolutely no idea what I'm doing.
And there is the first reason to start small. If you dont even know anything about programming at all then you better go start learning that first
My Personal experience is still 50:50 for each engine.
I tried both Engines myself and I never worked with a complete engine before.
Unity:
+Beginner friendly
+Very Simple to use
+Good Tutorials out there
+Works on many Platforms
+Supports Javascript, C# and Boo scripting
-Free version has cutted features
UDK:
+Im in love with the Level Editor. Really Easy to use
+All Features for free
+Kismet Editor (Used for scripting)
+Works on PC and Mac, not sure about Linux
+Many Tutorials
+Sick Lightning
-Harder to get into it
-Not suitable for a solo Project
Unity was easy really easy to use and you can create Games with it more quickly. Problem for me is the Pricing Model. The free version feels like a demo.
UDK is awesome BUT not made for a single developer. I guess when your working with at least an 2D and 3D Artist you can get more out of it.
1) If your not going to make high end graphics and just plain text like in the good old days then sure why not. If you have the will to do it then youll do it.
2) Because simulating management you could use any language .... if you want to use graphics then any language which has a supported graphics API can be used.
For easy going just use C# for the beginning.
3) Read something about Game Design and OOP, you'll get a good idea on how to structure your application/game.
The difference between a library and engine is that a library offers classes and functions.
A game engine is a complete system which can be easilie filled with content.
If you want to create a small Platformer Game and you have no experience in game development yet I recommend to use an existing engine just to get the idea behind the technical game side.
-Slick2D is a 2D Engine for Java and should work out for your current needs.
Once you have more experience and understand what a game needs to do you could try to use LWJGL to create your own engine.