Okay, I'll take a stab at this:
Safari - either Google Chrome or Chromium (depending on how open you like things) can keep pace with Safari in terms of general usability and extension ecosystem. At worst I think you'd find the experience on par, but when I owned a Mac, I found Google Chrome to be more performant than Safari on the regular, and its Linux build is just as quick. A lot of Linux folks recommend Firefox as well but I still am not convinced it beats Chrome in terms of out-of-the-box magical "Just Works" factor.
Discord - The client may be alpha, but this works just fine honestly. I've never had a problem. This is largely because the desktop app is Electron based, so it's running on a web browser anyway; it's very, very cross platform friendly. Slack too, if that's your thing.
iTerm - There are MANY good terminal clients for Linux. I personally use Terminator, which I find has a good balance of power features and stability. I particularly enjoy its terminal broadcasting implementation, but I'm in the unusual position of working on many parallel servers in tandem during my day job, so this feature is very important to me.
iTunes - If it's just for movie watching, I've found VLC to be perfectly servicable. mPlayer is also quite popular and there are many frontends.
Messages, Outlook - Here you've got a fair point. Outlook in particular is a pain point; there are workarounds to get it working in Thunderbird and Evolution, but they're just that - workarounds. Anything beyond basic email will need the web app; fortunately the web app isn't _terrible_, but yeah. Fair complaint.
Xcode - If your goal is to build Mac / iOS apps, there is no substitute thanks to Apple's EULA. For everything else, pick your poison; there are more code editors and IDEs on Linux than one can count, many of them excellent. Personally I'm happy with Sublime Text (paid, worth every penny) and a Terminator window, but I hear VSCode is also excellent, which is odd considering that's a Microsoft endeavor. (Now if we could just get them to port Outlook...)