1) When writing a new ammo value you would need a static pointer address right? But when you NOP you do not use static pointer address why? I hear they use memory address when nopping. Can someone explain?

Most executable opcode will be at static addresses that only change when the code is changed, say with a game update. And even if they use an address like DEADBEEF then it can still work if the game is always assembled into the same starting location in memory.
But know this isn't alway true. You might want to look into using AOBs and code injection, injection can be used to store a base address for making your own pointer.