Por que preciso do símbolo @ para usar esta função?
O símbolo @ significa que você está usando uma variável, então a string lida não é colocada imediatamente na tabela, mas em uma memória que permite operar com ela antes de inseri-la. Mais informações em http://dev.mysql.com/ doc/refman/5.0/en/user-variables.html
O formato dos dados ('%c/%e/%Y') deve ser o formato dos dados inseridos ou da saída desejada?
É o formato dos dados inseridos, mais informações em http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_str-to-date
Posso capturar o tempo dessa maneira também?
Você deve conseguir, desde que tenha escolhido o formato correto, algo como
STR_TO_DATE(@temp_date,'%c/%e/%Y %h:%i:%s');