NFC is a very low-bandwidth transport, generally for practicality you'd want to only send less than ~10kb across the link and there are limits enforced by the drivers that prevent sending more than this directly across NFC.
The way Windows Phone handles sending large files like high-res photos between phones is to use NFC only for negotiating and bootstrapping an out of band connection over a higher bandwidth radio like Bluetooth or WiFi. So when you tap+share a photo in Windows
Phone the phones will talk over NFC to exchange each other's Bluetooth/WiFi addresses and begin establishing a socket over one of those radios, then they send the file over that.
If you open two Windows Phone emulators on the same PC (choose a different screen resolution for each one to be able to run them both at the same time), then select a photo on one of them using share->tap+share, and use the Proximity Tapper tool to simulate
the tap you'll see the messages that Windows Phone uses to negotiate a connection over IP to actually send the photos.
The underlying protocol for establishing a raw socket between the devices is documented here:
And the protocol for sharing files like photos across that raw socket is documented here:
These protocols are supported on both Windows 8/8.1 and Windows Phone 8 and are interoperable across platforms.