Let's think about that...
a) is it better to show an error message inside just the panel(inline error message), and continue to show other panel data? This way, user has access to as much data as possible?
If the loader data for each panel is asynchronous, I think that may not be a problem show the loaded data into panel without errors, and to show the error messages, use panel area can be a good solution because you are providing the information where the problem is happen. In another approach, imagine a stack of flash messages (when you need to show more than one error message) and the user looking to the messages and making relation with panels, wooowwww.. is too much!
b) show a dialog popup for the whole page.
Popups/Modals/Dialogs are good when you need total attention of the user or when this user need to take a decision. In this case, you can prevent the user from realizing the error or being unsatisfied by this, showing the other panels and including in the error message (in panel with error), that the application will make a new request of the information to the panel that presented error. (You will need to talk with your developers to get this).
What is best practice? I think a) is better than b). Some of the questions I have if i choose a)
For me: A + message stating that the application will request the information again
Say I have 3 panels and all three calls fail (server down).. check this scenario and show an overall error? Or even in this case, each panel shows an error message (albeit they may be same error reason)?
Maintain consistency of design. Use the same approach, ever.
Should each panel have a separate 'refresh' option? to retry? Or should I let the users do the browser refresh to retry?
May your developer can help you making new requests using ajax or another asynchronous way to automate this step.
In case of a dashboard with several widgets.. if the error is inlined inside a widget, the user may not even see it, unless he wants data from that widget.. Is that acceptable? Or should the user be made aware that some part of page did fail?
Bugs are bugs when they are seen. If the user not need the data, the bug will not be a bug. Avoid to say what is not necessary, and try to be "Cute" with your error messages, a good microcopy is very important!
I hope helped.