I've always been curious about synths and how they are programmed. I'm a JS dev learning Rust and was having ideas about building my own synth. Is Max4Live a good choice for building audio plugins in 2023? Also, is Rust a viable option for creating VST plugins?
I don't think Max4Live is not a good choice for building audio plugins. It's a weird platform that was designed for 'institutionalized academic music,' as I once read someone describe it. It's difficult to program in and not efficient. None of my favorite music software is made with it. It's also quite buggy, in my experience. For doing some basic extensions to Ableton Live specifically, beyond what VST allows access to, it's OK, since it's the only official way to do so.
If you want to just dive into DSP using wires and boxes, with some additional code sprinkled in, SynthEdit or Reaktor Core are faster, more fun, and produce better results. If you don't mind C++, check out iPlug from REAPER's WDL codebase: https://www.cockos.com/wdl/ — there are some forks of it.
There's also JUCE. You'll find some people complain about it and some people regret using it, despite it being relatively popular.
There are some Rust things for doing VST (and AU) development. Here's one that I've seen a few things made with: https://github.com/robbert-vdh/nih-plug/tree/master I wouldn't worry too much about the differences between C++ and Rust in this world. Audio software tends to be buggy, so the bar for being considered 'good enough' is pretty low.
Max and M4L have a very specific jargon and tech legacy that makes them quite different compared to regular VSTs (not better nor worse, just different). Reaktor gets closer in terms of performance and limitations to regular VST development compared to Max, while still using a visual programming approach.
Handling/touching/processing MIDI events with JavaScript in Max will mess up the timing due to how Max handles scheduling — it will defer the event to a lower priority thread — so I don't recommend doing that. You can safely use JS for GUI code and using Ableton's API to manipulate the session and UI, though.