On the page you link to it says:
Canonical provides this packaging service to you free of charge.
and goes on to explain how to lay out the tarball containing your binaries.
If you create such a tarball and submit it via MyApps then all the packaging will be done for you. As it says at the bottom you can provide a source package if you like, but it's not required. Note that this is specific to closed-source or for-pay apps, anything that is libre and gratis has a different process currently.
As for your other questions:
How is the 32-vs-64 bit thing handled?
You can just upload 32-bit if you like as that works on 64-bit too. If you want to upload 32-bit and 64-bit then build it twice and put the results in "i386" and "amd64" subdirectories.
How is supporting different versions of Ubuntu handled -- 10.04, 10.10, 11.04, 11.10, etc?
You can specify which versions of Ubuntu your uploaded binaries work for as part of the submission process.
How are dependencies handled. If, for instance, my app depends on SDL, how do I specify that?
That will be added as part of the packaging process. If you want to add a comment specifying the dependencies then it will likely speed things up.
If I don't want to distribute source code for my application (which is a proprietary license), is there a clean way to indicate that source shouldn't go with the app?
As stated you don't have to provide the source at all.
If I'm not using autoconf/automake, does my Makefile need to be set up in a particular way, or are the autotools required?
Any build system supported in Ubuntu is allowed. If you are using plain Makefiles then that's fine. However, if you're only uploading binaries that's not an issue.
You're looking for override_dh_build-indep
From the manpage for the dh
command
OVERRIDE TARGETS
A debian/rules file using dh can override the command that is run at
any step in a sequence, by defining an override target.
To override dh_command, add a target named override_dh_command to the
rules file. When it would normally run dh_command, dh will instead call
that target. The override target can then run the command with
additional options, or run entirely different commands instead. See
examples below. (Note that to use this feature, you should Build-
Depend on debhelper 7.0.50 or above.)
Override targets can also be defined to run only when building
architecture dependent or architecture independent packages. Use
targets with names like override_dh_command-arch and
override_dh_command-indep. (Note that to use this feature, you should
Build-Depend on debhelper 8.9.7 or above.)
Regarding the Policy bit... A build-indep
target is being called, just not your build-indep
target.
Best Answer
We tried to write the easiest steps here in this blog post.
https://web.archive.org/web/20141210051522/http://developer.ubuntu.com/2012/02/how-to-prepare-a-compiled-application-for-ubuntu-software-center/