Check out the Roguelike Development thread to get started.
+1
If you don't know which programming language to use/learn, you should probably start with a smaller, less ambitious project.
And this.
Observe the Pareto Principle. Find the 20% of your game that 80% will play it for. Cut out the other 80% from your features list. This is actually hard work... anyone and everyone has epic ideas, but practical ideas are far rarer. You can go back to them much later once you've actually got a game. You'll find that you never really needed most of those anyway.
Prototype them.
Learn something simple like Construct (Classic) or Game Maker. As people have said, learn the techniques of programming (problem solving and pseudocode) rather than syntax. Be careful not to overwhelm yourself.
Write unit tests... what outputs do you expect from certain inputs? So if you have say a battle system... test balance by allowing your system to generate different kinds of characters, different kinds of enemies.
Try not to reinvent the wheel. Too many people fall into this trap. Doing it for practice is ok though.
Go for an early goal of building a prototype in a week/weekend/day. The shorter the period the better. Train yourself not to strive for perfection. Parkinson's Law also applies here - give yourself a year to do something and you'll be overwhelmed and paralyzed.
Your prototypes do not need to be in the same language that you plan to create your game in the long term. They're disposable. So make use of that an learn the easiest language.