A-1. In general, the content of a button's popup is created afresh each time you click the extension button whereas the sidebar's content persists. Hence, in this instance where I presume you will want this information to be readily accessible, it makes sense to use the sidebar plugin.
A-2. These methods encapsulate the core concepts of the two general methods for this kind of content, i.e. embed in a button popup or within the HTML page (i.e. the sidebar). Of course, there are all sorts of solutions available for how to display the content within the page ;-)
A-3. You can monitor tabs being created using appAPI.tabs.onTabCreated and use the callback function to perform any tasks you require. However, bear in mind that due to browser limitations, the method only detects new tabs created in the current browser instance.
A-4. This question is a bit tricky to answer without knowing more about the anatomy of your extension. I am assuming you want to inject this content into pages or use JS in your extension. Therefore, remote files can be included depending on the scope using appAPI.resources, appAPI.dom, or jQuery, as follows:
In the extension.js file:
appAPI.ready(function($) {
// Includes remote JS file into extension.js scope
appAPI.resources.includeRemoteJS('http://example.com/file.js');
// Injects remote JS file into HTML page
appAPI.dom.addRemoteJS('http://example.com/file.js');
// Injects remote CSS file into HTML page
appAPI.dom.addRemoteCSS('http://example.com/file.css');
// Injects remote image file into HTML page
$('<img src="http://example.com/file.png">').appendTo('body');
});
In the background.js file:
appAPI.ready(function() {
var remoteJS = appAPI.resources.get('http://example.com/file.js');
eval(remoteJS);
});
Disclaimer: I am a Crossrider employee