I can't see the difference between an object dictionary object and an application object.
mapping of application objects into a PDO is determined by a corresponding default PDO mapping structure within the object dictionary
But we don't map such thing as "application object", but an object of the object dictionary. In SDO service, the exact same objects are avaiable, but the specification don't use the term application object.
What is the property of an application object which distinguishes it from any other object?
You can only map items located in the object dictionary. When adapting the protocol stack to your application, you have to arrange this relation between the object dictionary and variables in your code.
The mapping parameters are stored at for example 0x1A00 for TPDO1. From there you can map objects stored elsewhere in the object dictionary, such as for example objects in the manufacturer-specific area 0x2000-0x5FFF or device profile-specific areas from 0x6000 and upwards.
For example if you implement the device profile CiA 401 for general-purpose I/O module, you can make 8 bytes for TPDO1 available in 0x1A00, which in turn points at 0x6000:1 to 0x6000:8, which is where the device profile states that digital on/off should be stored. Or you could map something specific to your product from 0x2000.
If you do something like the above, it means that the network can either access the data indirectly through what's mapped to the PDO, or directly by doing a SDO access at for example 0x6000:1.
Also, consider if you need to support dynamic mapping = the user can change mapping themselves, or static mapping = mapping parameters are read-only, always the same.