with ile gönderdiğiniz değişken tek kullanımlık oturum değişkeni olarak tutulur ve şablona PHP değişkeni olarak gönderilir. Bir sonraki istekte yer almaz, otomatik silinir. {{ $msg }} gibi şablon içinde kullanırsınız.
Laravel'in blade şablonlarında otomaik oluşan ve Illuminate\Support\MessageBag sınıfını temsil eden bir $errors değişkeni var. ->withErrors ile ile dönüş yaptığınızda mesajı bu MessageBag sınıfına, diğer hata mesajları ile dahil etmiş oluyorsunuz.
Normalde Validator için düşünülmüş ama ben tüm hatalar için kullanıyorum.
Mesela bu hata mesajlarının hepsine ulaşmak için şablon içerisinde şu şekilde yapabilirsiniz:
@if($errors->any())
<div class="alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
Diğer kullanımlar verdiğiniz sayfada mevcut.
https://laravel.com/docs/5.7/validation
ayrıca back() yöntemi zaten redirect barındırdığı için tekrar redirect() kullanmanıza gerek yok:
return back()->withErrors('Hata meydana geldi');