Instead of learning one of the pre-packaged windows systems, learn openGL which shouldn't take more then a week for basic 2d stuff, and write your own window code. You can do really great effects very easily with openGL. For fun you could mirror everything behind a semi-transparent plane to get really cool reflections, or you can add drop shadows or lighting. Once you have openGL you can build something more interesting then you could otherwise.
3d data structures will give you all the experience you need in designing data structures for almost any purpose. 3d algorithms on the other hand can be pretty difficult to understand, and if you actually wanted to learn how CG works you would need to take a course.
You might find it tempting to study direct3d or direct*, but they can be pretty daunting and are badly documented (IMO). Using any of microsofts tools is. They work in a fairly similar manner but direct* requires a ton of picky initialization code.
http://nehe.gamedev.net/