Sachverhalt: A. Das Kantonsgericht St. Gallen verurteilte X._ zweitinstanzlich wegen Gewalt und Drohung gegen Behörden und Beamte sowie Pfändungsbetrugs zu einer bedingten Freiheitsstrafe von acht Monaten und zu einer bedingten Geldstrafe von 120 Tagessätzen zu Fr. 50.--. Es verpflichtete ihn, A._ eine Genugtuung in der Höhe von Fr. 2'000.-- zu bezahlen und ihn mit Fr. 7'784.25 für die Kosten seiner Vertretung zu entschädigen. Es gewährte ihm weder Schadenersatz noch Genugtuung für die Untersuchungshaft von 98 Tagen. Vom Vorwurf der Gefährdung des Lebens sprach es ihn frei. Dem Schuldspruch wegen Gewalt und Drohung gegen Behörden und Beamte liegt folgender Sachverhalt zugrunde: Nach einer verbalen Auseinandersetzung beschimpfte und beleidigte X._ den SBB-Mitarbeiter A._ am 15. Juli 2009, um ca. 22.00 Uhr, auf dem Perron 1 des Bahnhofs B._. Etwas später packte er den SBB-Mitarbeiter und schob ihn Richtung Geleise. Danach stiess X._ ihn in eine Hecke und griff ihn mit Händen und Füssen tätlich an. B. X._ führt Beschwerde in Strafsachen. Er beantragt, der Schuldspruch wegen Gewalt und Drohung gegen Behörden und Beamte sei aufzuheben, und er sei diesbezüglich freizusprechen. Die bedingte Geldstrafe für den Pfändungsbetrug sei auf 30 Tagessätze festzulegen. Er sei von der Genugtuungszahlung und der Parteientschädigung an A._ zu befreien und die Sache sei zum Entscheid über seinen Anspruch auf Schadenersatz und Genugtuung für die Untersuchungshaft an die Vorinstanz zurückzuweisen. Eventualiter sei eine bedingte Geldstrafe von 120 Tagessätzen zu Fr. 50.-- auszusprechen. Der Beschwerdeführer ersucht um unentgeltliche Rechtspflege.