> move D1, A1 implies A1 is now not pointing to memory location 1000

> but instead is pointing to memory location containing 50
No, A1 is now pointing to memory location 50

> move D1, (A1) implies memory location 1000 is set to contain 50. is 1000 the address or the contents?

Memory location/address 1000 contains the value/has contents 50. There is a 50 stored at address 1000.

move 50,d1
move 1000,a1
move d1,(a1) // stores 50 at 1000

move 1000,d1
move 50,a1
move d1,(a1) // stores 1000 at 50

move 1000,d1
move d1,a1
move d1,(a1) // stores 1000 at 1000

Probably the best bet is to download an emulator and watch how memory is affected by simple code examples like the above. If you restrict all values to, say, less than 25, and the emulator has RAM at addresses 0-25, then you should be able to keep track of everything without taking up too much screen space or getting confused scrolling from one area to another trying to find the value.