In your first example: the last statement is the return value of the
function. The return value of println is nil. Therefor you see the
two prints and then from your REPL the return of nil. See below for
a marker, where it happens (imaging an implicit return seen in
imperative languages):
> ((fn [x] (println x) (println x)) "I have a question")
^~~~~~~~~~~
Your second example: The body of an anonymous function is directly
called. You should add a do inside the anon fn. Otherwise (as in
your example), This will use the result of the first print as a function
to call; add do at marker:
> (#((println %) (println %)) "I have a question")
^
You can see this unfold, if you check the resulting code after the
reader does its magic (see marker again):
user=> '(#((println %) (println %)) "I have a question")
((fn* [p1__8265#] ((println p1__8265#) (println p1__8265#))) "I have a question")
^