All mutations that happen in Livewire will be bundled in one response back to the client. This means that the event dispatched in the delete method will be received at the same time as the redirect. Because the index component does not exist on the edit view, it will not do anything - as you have noticed yourself.
Regarding flash messages, it seems that the message may be flushed before it got a chance to be rendered as you've mentioned above. An alternative approach would be to set the value in the session yourself, and removing it after retrieving it. This is easily done using the session()->pull() method, which is what I personally use in my Livewire components.
Example:
// In your Edit component
session()->put('message', 'The article has been deleted!');
<!-- In your Index component -->
@if(session()->has('message'))
<p>{{ session()->pull('message') }}</p>
@endif
This way, you will be able to store information for longer, and only remove it when it has been used.