In my config (see below), I have to xmobar's running, one on top with only %StdinReader% and the second on bottom with MPD and Date. The xmobar on top has as Border on Bottom and the
You're spawning the bottom one with spawnPipe, which is wasteful and not entirely effective (if your intent was to have the bottom bar go away when xmonad is restarted like the top one does, it won't work; the bar has to actually use a StdinReader or it won't notice).
xmobar on .. you
guess it. Well: while the borders of my windows and the xmobarborder sort of merge (1px + 1px = 2px), there is a gap between the borders of my windows and the xmobar on top. Why is that so and what can
I do about it?
Doesn't appear to be an xmonad problem; you didn't provide your .xmobarrc files, so can't tell from there. It might also be a bug in xmobar, although I'm not aware of one that would cause the strut to be miscalculated or the bar to be mispositioned.
(Oh, I see it's complaining about redundant $'s and that I should use 'head' ... what does the latter mean?)
It's being grumpy about the "<something> !! 0", which is more briefly expressed as "head <something>"; in this case, having it look like the other cases is probably more appropriate, so don't worry about it.
The redundant $ warnings are because "a $ b $ c" is identical to "a $ b c".
--