1) It isn't, really. Reference param passes the address into the function rather than the value.
2) Yes
3) new doesn't store anything. It defines space and puts the address of that space in the variable specified.
Consider variables as boxes you store stuff in. Each box can hold a specific type (books, school papers, clothes) and amount of data. Well, new is like yelling to Mom "Hey, I need another box!" She gives you one after making you say Please and you can store your action figures in it. It just gives you more storage space you didn't have when you started.