Should be cross-platform - I think the best way is to use Java - any other recommendations?
Typically there are compilers/interpreters for major languages on major platforms, so you could also consider other languages.
I'm not sure on whether to use a pre-made engine. While it would speed things up, I'd rather know what goes on "behind the stage", and I don't know if I can achieve that without creating from scratch. Any advice? (Oh, and if I were to use something pre-made, it'd have to be licensed under some form of copyleft so I don't have to struggle with licensing problems.)
You could also consider an open-source engine as a compromise solution: this may speed things up and you can learn things "behind the stage" as you will become more expert.