As things currently stand, development on the desktop is supported by almost any language and toolkit you'd like. However, Canonical recommends GTK+ 3.0 and python2.7 for beginners (despite old docs saying pygtk, it's really pygi - also known as python with gobject introspection). The default python in Ubuntu is 2.7 not 3.0. They have created a tool for developers called "quickly" that allows you to easily design, code, package and distribute your app. By default apps depend on pygi (GTK3) and the user interface is designed with Glade.
One thing you might notice with GTK3 and pyGI is that there aren't a lot of good documentation for it yet. Here is a palce to get started, but it's missing a lot of stuff. I find that I can translate many of the C++ Gtk docs and the seed docs into the appropriate functions in python by some experimentation. Often if I can find out how to do it with the old pygtk, it's not too different in the newer pyGI. Finally, you can always post to AskUbuntu or StackOverflow for help from the community.
Finally, ubuntu has some specific APIs to interact with Unity. Check out the developer resources page for more info.