Packets, IPs etc...
There are currently two versions in use: a 32-bit IPv4 address and a 128-bit IPv6 address. The 128-bit number will slowly become more and more used, as the vast increase of the internet has rendered the old system obsolete. This happened because there are only a certain number of possible combinations that you can have with a 32-bit number. As every single device that's connected to the internet needs a unique IP address, the number of combinations are slowly becoming not enough to have the number of devices in the world connected to the internet. There are currently more devices than there are IP addresses, although there's only about half the world awake at a time.
MAC (Media Access Control) Addressing
A unique MAC address is essential for each NIC, and usually a "burned-in" address is stored in the firmware, assigned by the manufacturer. This is opposed to having a MAC address programmed in by the network administrator, which is normally the case. This form of addressing is used for communication through Ethernet cables etc. The address stays the same on every NIC, so it's the same network to network, whereas an IP address changes network to network. The MAC address works on layer 2 of the OSI model, where as IPs work on layer 3 of the OSI model. This basically interfaces with the hardware, not the software.
A packet is a unit of data which is capable of being forwarded, or passed, to the appropriate destination. Multiple packets normally make up a larger computer messages, such as files. A good analogy is an airport; each suitcase represents a packet, the aeroplane represents the destination computer and the conveyor-belts represent the routers that are forwarding the data. The packet is put on a conveyor-belt, which then takes it to the appropriate destination.
An analogy for this is to compare protocols to a language. Each language enables us to be understood to each other. If a person is expecting English, but you speak in German, you won't be understood. This is the same for computers; if a computer is expecting a certain type of communication, and your computer provides a different protocol, or language, your computer will not be understood.