You need to add a (require (for-syntax racket/list)) to get the definition of second at macro expansion time. See Compile and Run-Time Phases in the Racket Guide for details.
The #lang racket languages does include racket/list but only at runtime (phase 0).
At compile time (phase 1) the imports are from #lang racket/base which doesn't
include racket/list.
The cure as @shawnw mentions is to import racket/list for compile time using (require (for-syntax racket/list)).
Note that second checks that the input is a list and cadr doesn't.
Therefore it might be better to use cadr depending on context.
Bonus tip: If you require syntax/stx for compile time, you can use stx-car and stx-cdr which work on both lists and syntax objects representing lists.