I was doing some Battle Quests today, and got Esmerelda for lv.3. When I tried to click “Fight this opponent again” (since I realized I’ve never fought her until now), I got an error message saying “You don’t have this opponent unlocked!”. And... apparently I don’t! I checked my opponent lists, and she’s not there.
Is it normal for Battle Quests to give you an opponent you haven’t unlocked yet, or is that a bug?
Yes, battle quests can give you any opponent that's part of the battle quest pool, even if you don't have it unlocked yourself yet. It's because you can't get any of the loot items from doing the battle quests, you're just battling for the EXP. If you want the loot, you still have to unlock the challenger and battle it outside of BQs.