I remember a piece of work where the authors were creating codes, then distorting a portion of them and then trying to read them back but I cannot find it now, I think it was focusing on shot codes.
In general, this idea of "Encode something, distort it, see how much you can read back" is central to coding theory and specifically error correction codes.
The ideal two dimensional bar code must achieve both high compression (to fit a large amount of data per unit of "space") and high error tolerance to ensure consistency of the encoded information.
These two metrics are probably enough for you to sort the barcodes according to information density and fault tolerance. Information density should be straightforward to calculate but if the code is using some form of forward error correction technique, then the number of redundant bits that are inserted by the code are reducing the density of the amount of user information that is encoded. For fault tolerance there will probably be a Bit Error Probability (BEP) expression VS a varying parameter. For more information please see this, this and this.
Now, this probably gives you enough terminology to go out there and search for relevant publications on your own too, but to try and answer your specific questions:
Which symbologies are most tolerant of low contrast, noisy background, lack of "quiet zone", etc?
All of these things work against each other and you will have to balance them. Codes are optimised for "something" and they would be best at that. It will be more efficient to determine your specifications and then look for a code that fits those specifications. For example, you want the code to be readable even by low end phones which set a limit to processing power, camera resolution and via camera resolution the distance from the other screen and via the dimensions of the other screen the sort of space you can scan clearly. Now that you have this, check your specifications of how much data you want to cram into that space. Then look up the codes that can achieve THAT information density and check for estimates of their BEP.
Are there significant differences in reliability when reading a paper barcode vs. a barcode displayed on another device's screen (LCD- or AMOLED-based)?
Not if you keep the comparison equal. All media mentioned have resolutions. If you keep things within those limits, the comparison would be equal. Similar to a screen, glossy paper has glare which would work against reading a code off of a piece of paper because it can obscure parts of the code.
Basically, if I'm trying to develop an application which will allow users to share information between devices via 2D barcodes… which one will make the process least "fiddly" for users?
I am afraid that the "problem" is all yours and none of the users. The users point their device at a code and expect things to work. As you have probably noticed from common reader apps, even the signal to start reading the code is sometimes automated, the user doesn't even have to press a button. Perhaps this is something to take into account too.
With the amount of processing power in a decent smartphone today, there are a lot of things that you can do on the phone to improve the chances of it being decoded accurately (if indeed it can be decoded). Here is an analysis of just the viewing angle effect on decoding and here is an example of what you can do to correct such problems.
Hope this helps