This is going to be an over-simplification and over-generalization for the sake of clarity in explaining, but here goes:
SDK stands for Software Development Kit (a software in its own right usually) and, like the name "kit" implies, is good enough for most development situations in creating software and applications. Each software developed contains applications inside it with a variety of different kinds of libraries attached or needed, so having an SDK framework which is a pre-made work pipeline is a huge labor and time saver. A common example of an SDK is the Windows SDK to make Windows based applications to run in the .NET Framework under the Common Language Runtime Environment, such as a game GUI which is targeting the Windows OS. Often an SDK works alongside other SDKs within a greater IDE, but they almost always may be used independently in most cases. Some SDKs are designed to be used with a certain game engine, which is an example of a third party SDK.
IDE stands for Integrated Development Environment and generally includes two or more software and also individual applications combined with interfaces to connect with internal or external libraries (which are more comprehensive than the typical SDK) to provide a more extensive framework for development of software or applications. An IDE tends to be more expansive in general than other frameworks and depends on the developer having experience enough to be able to build the nuts and bolts, nitty-gritty original coding from bottom to top, high and low level coding. Developers who are going to make software mostly "from scratch" will tend to consider more closely whether to use an IDE or not. An IDE is most efficient for a team to use, but some indy developers might have the time to spend the long hours in coding new software with an IDE. Individual applications are well inside the ability of most coders to use an IDE to develop them, so they are not limited to only software development.
Game engines are development frameworks which share some traits with both SDKs and IDEs but a game engine is deliberately designed for game development and within pre-determined objectives according to the game engine developers. An example is a Java based 2D game engine targeting mobiles. Another is a 3D game engine using C++ for PCs and consoles. Within these general goals are sub-sets such as RPG, FPS, Turn-based, online, offline, MOMP, and so on. Some game engines require a third party SKD or IDE to really take advantage of the full features of the game engines, maybe even allow a plug-in connections with another framework.
All of the major game engines are about at par with one another, so which is best is really a matter of preference according to your goals. Unity and Torque 3D are examples which have huge support in the form of art assets shopping ( Artists selling art made for them, but some no cost or low cost items are available, too.).
Clinton