Welcome!
a) What would be the best approach to reside legally? I work online so I may be able to get away without a work permit. My monthly income is around 3000 to 4000 USD and I can prove it if needed (contracts, bank statements, ...)
Well if you want to reside legally in Montenegro you will need to apply for Residency, which you can obtain by either having a work permit or by owning some property here. For the 1st option, the most logical thing to do is to set up a company, and hire yourself, which is an option many expats use to solve the residency issue. The cost of this, is c. 200€/month (accounting fees and social contributions). If you buy property, you can obtain residency based on the ownership, so that is the other option.
b) My son is 5 years old (probably 6 when we get there) and he must attend school, ideally but not necessarily in English.
There are 2 English schools in Tivat (KSI and Arcadia) so you could research these. They cost something like 1000€/ month and 500€/month respectively. There are a couple of International schools in the capital city as well.
c) Do you have any recommendations regarding which area would be best for us? We are looking for a quiet, friendly, safe area with a school nearby. I also need a reliable Internet connection.
Well, considering the school, you would probably want to stay around Tivat. Any place in Montenegro is quiet, safe and friendly, so you could pick any other place. The advantage of Tivat, in my opinion, is that it has a south-west orientation, so you get plenty of sun (better than Kotor or all the towns in the Kotor and Risan Bays), and it is very well located, not far from the Adriatic beaches, the Airport, etc. If you want even more quiet, then you could go towards Lustica Peninsula (15-30 min drive from Tivat). Herceg Novi is also a really nice area, BUT if you need to go to Tivat regularly, then you need to take the ferry everyday which costs 4.5€/one way, which is quite costly.
d) Do you have any immigration attorney that could help us on this matter?
You can message me, and I can give you a couple of contacts.
Cheers!