I think the error message means what is says - the first argument to offset must be a range (or what I would call a reference). So if you try doing this for instance
=offset(1,0,0)
instead of
=offset(A1,0,0)
you get the same error message.
In this case importrange is just giving you a set of numbers, not a reference to cell A1 in the other sheet.
If you imported the range into B1 (say) of the current sheet, then you could offset relative to that, but I don't know a way of using offset in another workbook.
So you have to do the import and the offset separately
=importrange("key","sheet1!A:C")
and then (assuming this imports into B1)
=offset(B1,match(A5,importrange("key","sheet1!A:A"),0)-1,1,2,2)
At least importrange is dynamic so if you update a cell in the original spreadsheet it will update in the current spreadsheet.
If what you are hoping to do is to select certain rows and columns from the imported data without having to import all the data into the current sheet first, there is a method for selecting certain rows from a range described here, so with the importrange it would look like this
=query({importrange("key","sheet1!A:C"), arrayformula(row(A:C))}, "select Col2, Col3 where Col4 <3")
- this would give you the first two rows and the last two columns (my test data has three columns).