Difference between /dev/ttyACM0 and /dev/ttyS0 (Arduino IDE ports under Linux)

/dev/ttyACM0 is a USB communication device (CDC) of sub-type "abstract control model" (ACM). That is what the Arduino is.

/dev/ttyS0 is a hardware serial port - the (typically) 9-pin D connector on the back of your computer.

If you want to use /dev/ttyS0 (why would you?!) you will require a special cable that converts the RS-232 voltage signals from the 9-pin D connector into the right TTL level signals for the Ardiuno and wire it in to the right pins on the board.