¿Por qué necesito el símbolo @ para usar esta función?
El símbolo @ significa que está utilizando una variable, por lo que la cadena de lectura no se coloca de inmediato en la tabla, sino en una pieza de memoria que le permite operar con ella antes de insertarla. Más información en http://dev.mysql.com/ doc/refman/5.0/es/variables-de-usuario.html
¿Debería ser el formato de los datos ('%c/%e/%Y') el formato de los datos ingresados o mi salida deseada?
Es el formato de los datos ingresados, más información en http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_str-to-date
¿Puedo capturar el tiempo de esta manera también?
Debería poder hacerlo siempre que elija el formato correcto, algo así como
STR_TO_DATE(@temp_date,'%c/%e/%Y %h:%i:%s');