Check the protocol.
NIP-01 (the core and mandatory part of Nostr) prescribes usernames (the "name" tag), but allows for additional metadata fields, which are described in NIP-24. Among them, the "display name" (the "display_name" tag). The "name" tag should be present even when the "display_name" is not, but not the other way around (although I think if only the display name is set for a user clients should display it).
Personally, I don't think they were a mistake. I think there are arguments against it, but also that they do have some use. Essentially they serve the same purpose as usernames, but may have a different style.