On the "duplicate records" front, your final JOIN is saying "give me all the printers associated with each asset".
Inner Join tblPrinters On tblAssets.AssetID = tblPrinters.AssetID
You're not actually including any fields from tblPrinters in your report, but you're producing results for each of the associated printers, hence what appears to be the duplicate entries. If you don't want duplicate results, remove the JOIN to tblPrinters. If, on the other hand, you want a list of printers, add fields from tblPrinters to your report and the results will no longer look like duplicates.
As far as a field showing locally-installed printers, tblPrinters.Local should tell you that, e.g.
tblPrinters.Caption,
CASE
WHEN tblPrinters.Local = 0 THEN 'No'
WHEN tblPrinters.Local = 1 THEN 'Yes'
END AS isLocal