The hardware PWM (on pin 18, AKA GPIO 1) does the PWM in hardware, so the chip takes care of it silently in the background. The software PWM provided by WiringPi requires the processor to continually switch the state of the pin, so you need a program to be running the entire time in order to do this. As I have read, each pin doing software PWM requires about 0.5% of the CPU to accomplish this. This also means you can't do it from a shell script or the command line; it has to be Python or C, as far as I know.
If you don't mind the small amount of constant CPU usage and will have a program running continually to control your speed anyway, you can use either. If you do mind the extra CPU load or intend to "set it and forget it" by letting your program or script exit until you change the PWM duty cycle (in your case, fan speed) then use the hardware PWM.