Ordering by meta_key

That happens because of the way WordPress structures the MySQL queries, and the way posts joins postmeta. If a post doesn’t have a value in featured, it won’t join. Here are two options for you:

  1. Update the way you’re storing featured to store the value regardless (either ‘1’ or ‘0’). Ensure that every post has a value for featured and they’ll all show up. If you’re using a checkbox to set the value, this is very easy: put a hidden field above it with the same name as the checkbox and the “not set” value. If the checkbox is checked, it will override the hidden field.

  2. Use two loops in this archive page. You can use the technique I suggested in this question to ensure that your featured posts don’t show up twice.