A 3D game is a game that renders triangles at certain perspectives. The triangles may face any direction.
A 2D game is a game that renders squares always on a flat plane, always facing directly at the camera.
The 3D game may have a camera angle that makes everything look flat - that doesn't stop it from being 3D, and requiring 3D work.
The 2D game's squares are actually broken into triangles and rendered using the 3D system anyway - but that's a technical detail that isn't bothering the programmer, since it is usually hidden away and not something he has to deal with anyway. The 2D images used might look like they are 3D, but that doesn't concern the programmer - he's just drawing flat squares. Making the 2D art look like it's 3D is an artist's concern.
Here's two images I found online to illustrate the point:
A poorly done castle in 3D: (most 3D games look way better than this - this was just the first image I found)
Everything seen in the image above is triangles in 3D space (being projected onto a 2D monitor) with 2D images 'texturing' the 3D triangles.
A not-too-shabby castle done in 2D, even though it looks 3D-ish:
Everything above is 2D squares (which will each be later broken into two triangles per square, but that's not important) and completely flat against the screen. The shading of the characters' clothing, the shadows of the trees, the shading on the curved castle towers, that's all drawn by artists and not something the programmer needs to deal with. All the programmer needs to deal with is where to draw the squares, and what order to draw them (draw the people behind the castle walls first, then draw the castle wall to cover the people, then draw the people in front of the wall to cover the wall again - but draw the flooring before all of that).
This is just talking about the art side of things, so when I say "all the programmer needs to deal with", I mean, "all the programmer needs to deal with on that one part of a large game project"; I don't mean to imply that programmers choose 2D because they are lazy, but because it lessens an already overwhelming load.
There are not multiple different views of what's considered 2D or 3D - find some pictures of a game that looks similar (in appearance, not in gameplay) to the type of game you want to make, and any programmer on this forum can tell you whether it's 2D or 3D, in the majority of cases, just by looking at the image. Occasionally there's a really good 2D game that looks (when not viewing it in motion) like it's 3D. Sometimes, 3D is used to just do 2D - but that's just using the 3D engine to do 2D, so it technically counts as 2D anyway (if all the triangles are draw on the same plane, or entirely parallel planes).