Using PROGMEM for hexadecimal array

How can I know if the data I want written is actually being written correctly?

It is being written correctly, it is not being corrupted along the way. The trick is to understand exactly what you are asking the computer to do.

The third print statement however returns 27 or 148 when depending on whether I used "&testdata" or "testdata" i

That is because you are asking it to print out two totally different and mathematically unrelated numbers. One is the memory location and the other is the contents of that memory location.