There was a similar poll on css-tricks, a while ago. As per the consensus, the "correct" usage depends on the context.
You would use "front end"; when you want to use the term as a noun.
He wants to get better at front end.
You would use "front-end" when you want to use the term as an adjective... compound adjective, to be more precise.
We are looking for passionate front-end developers. No, seriously! We are... :-)
"frontend" can also be used as a simple adjective.