You need time, internet connection and will to make games.
If that game engine seems a pretty big thing then you can try your hand at python. It is an easier programming language compared to C++ and there is book freely available "Invent your own computer games with python". The books teaches python as needed to make games. It can take some time but everything does.
If you haven't tried any programming language but want to make GUI easily then you can try Visual Basic. It is very easy to make GUI in VB. For using VB you can download Visual Studio 2010 express edition. It is free. Then there is Microsoft's MSDN library which contains a lot of material for VB. There is even a tutorial about how to make a maze game in MSDN library.
Do all design programs have a logic funtion
What does that mean? All programming languages have enough methods to make games. You need to use special libraries. If you don't want to use Visual Basic then you can use Python also. It is very easy for a begineer to learn and there is good book available on internet "Invent your own computer Games with Python". That book can also help you.
But I would suggest that you try VB before python. Making GUI is easier in Visual Studio.
But i cant decide if i should use unity and make a 3d one, or learn xna and make a 2-d or isometric one (ive heard 3d in xna is alot harder) i would much prefer to use 3d because i have skills in 3d. But im guessing unity will limit my options.
Unity wouldn't limit your options. You can make a 2D game in unity. There is actually a tutorial on unity's website regarding creating a complete 2D game. A complete tutorial. Unity supports scripts in C# so while making the game you will be able to learn C# also. And you will be able to convert the 2D into 3D if you ever decided to.
Making your engine isn't something I would suggest unless you have good amount of time, good programming skills and will to stick to it.
C++ is good. But making a game with it will take time. Much higher than the game engines
Working with C++ gives you more control as compared to a game engine. You have to decide whether you want control of a game that you can make in a longer time or lesser control of a game that you can make in much shorter time. The difference in the control is not that great for a beginner game programmer