1. You and your friends recognize that even an openworld RPG without the MMO monicker in front of it is going to be a HUGE project. Good. You seem to be more realistic than many inexpierienced beginners coming here...
2. Start with small games: very good idea. You guys will need to learn A LOT to even make small 2D games, let alone a modern 3D game. You will spend months and years learning the needed skills. Having smaller milestones you can work against before you embark on your journey to your dream game can keep you engaged and give you a morale boost whereas the merciless grind of trying to work on a way too large scope with too little expierience can burn you out quickly.
3. Write your own engine... do you want to create an engine or a game? Writing your own engine, as in fully featured 3D game engine is pretty pointless nowadays, unless you a) do it as a learning expierience, b) want to create a very special niche engine or c) just do it for fun. Not to mention that it takes A LOT of time. Time that would be better spent on your game, if that is what you want to make in the end.
Your chance of being able to create a business around your own Indie engine is most likely nill, so don't even try. And there are so many GOOD professional 3D engines available for free that there is no point in creating an engine for your own game.
4. Which engine: either Unity or Unreal Engine 4. From my own expierience, Unity 5 is easier to start with, giving you a slightly more powerful engine editor and better structured documentation. Unreal Engine 4 seems to be the better runtime engine to me, and more forgiving about accpeting 3D models of differing quality. Unreal comes with more rendering power and tools out-of-the-box, but the asset store of Unity is much better equipped and can fill these gaps, if you have the money.
I personally had a short, but pretty bad first impression of Cryengine when I gave it a spin. Outdated editor, horribly buggy example project. Add to that the fact that community size and available tutorials are nowhere near the one of both Untiy and Unreal, and I cannot recommend it really. But YMMV.
If you want to start with smaller 2D games there are many simpler 2D game engines out there that might help you more than big, fat 3D engines that can be abused to also produce 2D games.
Game Maker gets mentioned a lot, I haven't tried it myself though.
Or you might find it a good learning expierience to write your first few games from scratch, using DirectX or OpenGL directly, or frameworks like Mono or SDL.
5. Programming Language: Depends on the Engine you will use. Programming language is C++ for Unreal Engine 4, C# for Unity 5.
I find the C# API in Unity easier to get into than C++ in Unreal (having worked in Unity for 3 years but just started in Unreal might contribute to that though), but Unreal Engine 4 comes with a Visual Scripting tool, Blueprint, which allows you to drag-and-drop most stuff together without having to know any formalized programming language...
Don't get your hopes up to soon though, you will still need to know some technical stuff and the basics of programming, else you will not get far in Blueprint. Or produce horribly inefficient "Code".
Unity also allows you to use UnityScript, which is basically JavaScript, instead on C#... but really, Unity's C# API is so easy to learn there is little point in choosing that over C# (as long as you can live with the whole Object Oriented shebang).
C++ is what most bigger studios use for their games... though if you just want to create your own game, you can use any language you want if you roll without using an engine. C++ is said to be more efficient and faster than other languages, I would argue that depends on the compiler and also there are enough other downsides to it. You will find game engines and frameworks for almost any language out there by now, and really, a good programmer will have no problem switching one language for another.
It is not so important what you choose as your first language, you just need to pick a language and stay long enough with it to learn the basics of programming.