For programming (or 'flashing' a chip) with firmware, what you need is...
- The target chip itself (get the same model number)
- A HEX file containing the firmware
- A programming tool, like a PICKIT3, sometimes also called an ISP
Watch out tho, every vendor has their own series of tools. So you cannot 'just' program a Atmel AVR microcontroller with a PICKIT, or vice versa.
With PICKIT3 you can flash (almost) every PIC chip with firmware. It's a matter of connecting the programming pins to your target chip, connecting the PICKIT3 to your computer and programming the HEX file with something like MPLAB or (easier) the PICKIT3 utility. A HEX file contains the firmware for a microcontroller, and the PICKIT3 can write (flash) it into one.
If you want to write new software yourself (design your own projects etc.), it's a bit harder because you have to learn a programming language. Then it's probably best to get the same stuff (either an Arduino, or PICKIT3, or whatever you want to use) and pick up some programming tutorials.