Can there be stale blocks in "header first" implementation? The Bitcoin developer guide mentions stale blocks as not being in the longest chain, then moves on to orphan blocks. It states you don't get orphan blocks, "and if you do" they are just dropped. But it doesn't mention whether stale blocks are also "abandoned" (for lack of a better term).

p.s. I'm thinking of using a blockchain for scores in my game, to have a universal top ten sort of thing. Any comments welcome.
Stale and orphan blocks are confusing terms with many meanings, depending on whom you ask.

If by stale blocks you mean "blocks that are on branches off the main chain, but are otherwise valid", yes, those still exist. They are inherent to proof-of-work chains, as you can't avoid the case where occasionally two miners produce a competing block. Necessarily, at most one of them can win, and the other one will become stale.

If by orphan blocks you mean "blocks whose parent header is unknown", those indeed don't exist anymore. They were an artefact of the synchronization implementation used until 0.9. Since 0.10, we only request blocks once we have validated all the headers in their ancestry, so blocks without headers known cannot occur anymore.