However, I wanted to know how data can be transfer from the PC to the Arduino
Just like you send it from the Arduino to the PC. Some application on the PC connects to the serial port that the Arduino is listening to, and starts sending data.
Serial.available() and Serial.read() on the Arduino take care of getting the serial data.
and the acceptable format.
Whatever makes sense for your application.
My question is what software can send data to Arduino
Lots. The Serial Monitor is some existing software that can. If you want to develop your own, look at the Playground. There is a huge section on making the PC talk to the Arduino.