I'm just going though a web course on this which is pretty good.
https://www.udacity.com/course/web-accessibility--ud891
I think moving focus into the modal is pretty helpful
Here's the video on focus
https://www.youtube.com/watch?v=BoAsayPVogE&t=65
You can set tabindex="-1" on the header of the dialog, and move focus to that. (Also set outline: none on the dialog, but not anything else). Then you can just call focus() on it, which isn't too hard.
I think it's okay if you don't remove the ability to focus on all the background stuff if the focus is at least moved into the modal.
I think for aria-labels for buttons, the best way to check this is to either use chromevox/ a screenreader and see what it says for the button. You can also inspect element, and go to the aria tab in chrome dev tools, and see what aria name is computed. You can see the order it takes them from, with aria-labelledby, aria-label, then contents.
If the name is reasonable, then you don't need a aria-label at all.