First, evil and good are , in fact , human conceptions that are so individual as individual is every person in this world.
Now mix it with personal and selfish reason with fifty shades of hypocrisy and then you have worldwide definition of these words.
Vergil was label to be evil by the developers and, in fact, that is the only thing who makes him evil.He could be like he is and do what it does and be labeled as good, if developers had described him as such.Even Mundus can be viewed as a nice pal: Vergil wanted power, Mundus not only gave him power, but he gave him the place Sparda had, as his right arm. Dante wanted a "mother", Mundus gave him "a mother" and even he gave Dante the opportunity of having even more mothers if he wanted too.
About them being shadows of each other:
This could give us a very interesting analisys; at the first sight Vergil is bad, evil and cruel , but his "lunar side" or his true personality be caring, devoted and gentle; his coldness could be a way to confront and deal with the world.
The same way Dante seems to be good, heroic and to have good intentions, but in the deep him being cold, cruel, egostical and of dubious behavior.He has given shades of it in the pasts.
Why nobody did Vergil a developed personality? They were not interested on it or probably don't know how to do it .And let us be honest, Dante 's personality wasn't well done too. Capcom only used ( and badly) Jungian theories to give depth to something that don't makes sense from the beggining. Their psychological excuses to characters behavior make no sense, but they used it anyway hoping nobody put them in cause.
Why people like evil people ? You have to ask it to people who follow and venerates serial killers and rapists. Only them can answer it...