Ответ 1
Результат script - это последнее оцениваемое выражение. Поэтому в вашем примере вы можете использовать:
chrome.tabs.executeScript( null, {code:"var x = 10; x"},
function(results){ console.log(results); } );
Это приведет к регистрации [10] на консоли расширения.
Результатына самом деле представляют собой массив значений, потому что, если на странице имеется более одного кадра, вы можете указать, что script должен быть введен в каждом из них и получить результат всех инъекций. См. Спецификацию executeScript. Если вы не укажете allFrames: true, тогда результаты всегда будут единственным массивом элементов.