Hey fattipants - good to see you here.
1) That's an excellent question, one I had trouble trying to answer without testing. So.. I went and tested.

I setup a 465GB L2 against my C: (4KB sectors) and Y: (64KB sectors) drives, and disabled the L1 that was already in the Cache Task to get as clear a result as possible. I then copied a 24GB .mkv file to C: with the L2 active, verifying via Primocache's GUI that the L2 was being filled. Because I have deferred writes on (I use a UPS), I noted the deferred writes statistic climbing while the initial copy to C: was happening.
I then forced a flush of those deferred blocks, and waited until it finished (so the data was actually on C:), and double-checked the free L2 cache space to make sure it still held the file (which it did). At this point, the file is physically on C:, and in the L2 cache as read-cache-contents. The Cache Task was setup as read & write, with 16KB blocks. Moving the file from C: to Y: forced Primocache to duplicate the file inside the L2 - I can only speculate that it had something to do with all the different sector/block sizes. It did
not happen instantly in this test case.
So, I went and re-formatted Y: to 4KB sectors, and re-created the Cache Task with a 4KB block size (so all three items were using 4KB unit sizes), and re-tested. Knowing that the large file to move wasn't in the L2, I flushed the cache contents and re-copied it to C: so it populated the L2 cache. I then flushed deferred writes, and proceeded to move the file to Y: again. And again - it did not move the file instantly, though it
did max out the L2 SSD's transfer rate.
So it appears blocks are uniquely independent inside the L2 (and L1) caches for
each drive, and transfers will not be instant. However had I put a sizable L1 on this Cache Task (that could hold both copies of the file), it would have duplicated the file at the fastest speed RAM could handle.
2) Not by design. That is - Primocache works at the block level, each block holding x number of sectors on the drive. It's theoretically possible that it could hold the entire MFT and deliver that content without spinning the drive up, but I've never browsed a sleeping drive without it waking up first.
3) I actually use a large L1 (RAM) cache (with deferred writes) to help defragment spinner disks more quickly. Every time a block of sectors is read/moved/written to a temp area on the disk, and then re-read/re-moved/re-written, Primocache can defer that set of operations so that there's less disk thrashing and "trims" the repeated writes.
The only downside, is that it won't natively know you're defragmenting, and so it will start filling the cache (if there's space) with every file it accesses. It will of course, still "weigh" the most frequently accessed files so that some of your normally-cached content stays in there. But the overall effect lowers hitrate and dumps some of the cache that would normally be filled with file contents you'd used before.
If you truly want the cache to stay full of the things you use most, pause the Cache Task prior to a defragment, then when done resume the Cache Task. Due to the relocation of certain files, if they were previously in the cache they will have been removed from it since Primocache was paused during the defragment. Those blocks/sectors will have been cleared during the move.
If you find you want any help or tips setting up Primocache, feel free to ask.