- Your app is network-heavy and the internet goes down -> freezing
- Your app accepts uploaded files and the user tries to load something bigger than the app would expect -> freezing
- Your app is supposed to perform some sort of calculation with terrible code provided by user -> freezing
- Your app interacts with some sort of device (printers, scanners...), and a cable is yanked or the firmware is dubious -> freezing
- Your app runs smoothly on developers' desktops with 16GB of RAM and all the latest patches, but actual users deploy it on a 4GB laptop the company bought in 2010 (because "it does email and Word just fine") -> freezing
Etc etc
Tbf, over 25 years we've gone from "bad situation on Windows requires a hard reboot" to "bad situation on Windows requires forced killing", and it's more difficult for apps to step on each other's DLL-shaped toes. But yes, freezes and crashes continue to be an everyday situation for many - which is why the first thing Office applications do, when starting, is to check for possible leftovers of a crash.
"Should" being the keyword there. That dialog comes up fairly rarely in my experience, and only after waiting a very, very long time.
That's because the close button on Modern Apps, unlike Win32 old apps, always did force quitting.
That's why with Windows Modern apps, there isn't the popup for "Do you want to save the changes?". Because the guideline states that the app should always save changes automatically (Since 2013 there's proper APIs to store these data, and it even sync with your other PCs).
I've come to loathe the VS experience; I used to love it but it really feels like it's been left behind to rot.