Я думаю, Действие страницы будет лучше соответствовать вашим потребностям, так как вы сможете полностью скрыть всплывающую иконку. В противном случае вы можете заставить всплывающее тело исчезнуть, используя:
chrome.browserAction.setPopup({popup: ""});
Что касается вашего первого вопроса - есть два варианта. Если всплывающий HTML-код все время остается практически одинаковым (как и шаблон), изменяются только данные - вы можете передать данные с помощью параметров GET url, прежде чем щелкнуть по всплывающему окну с помощью:
chrome.pageAction.setPopup(tabId, popup: {"popup.html?param=value&..."});
(во всплывающем окне вам понадобится проанализировать URL, чтобы получить данные). Если есть несколько разных стилей всплывающих окон, вы также можете использовать этот метод для переключения между разными файлами.
В случае, если всплывающий HTML-код каждый раз совершенно отличается, вы можете подготовить всплывающий HTML-файл на фоновой странице, когда пользователь делает выбор, а затем передать готовый к отображению HTML-файл, когда всплывающее окно открывается.