Assembly is just programming. If you have any experience with other programming languages, it should be pretty easy to pick up. If not, it's still possible, but it will be a lot to take in.
The best 6502 reference page IMO is obelisk:http://www.obelisk.me.uk/6502/reference.html
But that's just a reference sheet -- it won't actually teach you anything. Most tutorial documents on NES architecture are centered around homebrew development. Unfortunately I don't know of any that really take it from a rom hacking perspective.
I personally learned from the old-but-still-great "6502.txt" available on nesdev:http://nesdev.com/6502.txt
Don't know if it will be as useful for you, as I had a lot of programming experience prior to reading it, so I was able to piece together what it was talking about without too much trouble. It's pretty solid, but there are some typos in the transcription so I wouldn't use it as a reference for specific details like opcodes and the like. Use obelisk for that.Mostly NES specific concepts that are helpful to know before you start reading 6502.txt
The 6502 is a memory mapped architecture. Instructions will read/write to different "addresses". Addresses are 16 bits wide, meaning they can range from $0000 to $FFFF. Different blocks of addresses map to different things.
In the NES's case, the [simplified] memory map is as below:
$0000-07FF = RAM
$2000-2007 = PPU (video) registers
$4000-4017 = APU (sound) registers, as well as joypad registers
$6000-7FFF = on-cartridge RAM (often battery backed to allow for saved games)
$8000-FFFF = ROM
ROM is data that does not change -- like game code and data. Pretty much anything in the ROM file (hence why they're called ROMs). Data can be read from ROM, but cannot be written.
RAM is data that can change. It's effectively a workspace where the program can save information that needs to update. For example, to keep track of a player's HP, the game might dedicate 1 or 2 bytes of RAM. It can read that value to see how much HP they have, or write to it to change how much they have.
When an instruction reads from an address, what it's actually doing depends on what block of memory it's in.
LDA $34 is reading from address $0034, and therefore is reading a value from RAM. Whereas:
LDA $2002 is reading from a PPU register, and therefore is asking the NES for information about the current state of the video output.
The above info and 6502.txt should cover most of what you need to know. If you want detailed register descriptions you can use the nesdev wiki:http://wiki.nesdev.com/w/index.php/Nesdev_Wiki
If you have questions, you can post them here. A lot of people here are knowledgeable and willing to help. However, in future posts you REALLY should try to add punctuation. Your sentences all run together and it makes them hard to read.