Let's give some simple, useful answers that don't involve navel gazing:
1) It looks like you have to know C to program PICs. So what would be the best way to learn it? I learned BASIC by a manual that PICAXE made on BASIC commands. Is there something like that for PICs?
There are several things you need to learn:
- The development environment.
- The syntax for whatever language you're using.
- The methods of accessing various "peripherals" available to you.
- Software libraries.
- Hardware interfaces.
2) What software do I need? is there some standard software for PICs?
3) What programing hardware do I need?
I recommend you make things as easy as possible for yourself.
What is the most common beginner environment? You've already been told about Microchip's IDE -- use that. The environment also includes the programmer. Find one that's widely supported. PICkit 2 and 3 have been mentioned. They're cheap.
Pick the most common language. It's going t be either C or Assembler -- personally I recommend C. You'll get more done more quickly to begin with. Also it's common (in some respects) between many target environments.
The combination of the above will dictate a range of chips (unless you've forked out for an expensive compiler). So choose something reasonably priced in a DIP package so you can breadboard it.
Software libraries will come later. By choosing a common development environment these will be easier to find.
Hardware interfaces you should already have a head start with. Read the datasheet (or crib from the web) to find out how to connect up power and the programmer and maybe a single LED on an output pin.
Your first program should be something really simple. Do nothing more than flash the LED. Don't even try to write it yourself, just take a demo, compile and run it (make sure your LED is on the right pin).
This step is somewhat deceptive. You may find yourself left trying to figure out what "fuses" or configuration words are needed. This is where keeping as close as possible to the laid out example will stand you in good stead.
I use a simple program like that *every time* I use a microcontroller. It allows me to check that I've got all the basics working.
Now start modifying the program to add functionality you're interested in implementing.
If at some point you come up against limitations, then *maybe* you might need to resort to assembler.