As for the first approach, I can give you some steps related to Highcharts. Once you have your dynamically created icons, you can use ColorAxis to determine color range, see the API reference here: https://api.highcharts.com/highmaps/colorAxis
As for the traditional heatmap, again you can workout colors with ColorAxs, please see a sample demo here: https://www.highcharts.com/demo/maps/geoheatmap-europe
While Highcharts Maps doesn't directly provide satellite or physical map views, you can overlay Highcharts on maps from other libraries like Mapbox or Google Maps by synchronizing the data and using custom overlays.
Best regards,