I have to admit, I'm not sure what you're asking for. You've left out important items in your schema, like what are the "full records" you wish to pull?
If you have control over the schema, perhaps you would be better off altering it. It seems like your trying to store test scores, but store an array of children for each score received. Now it may be just me, but perhaps you might be better off splitting this into multiple tables.
In this setup you can construct a query that matches records on the stuff-id and uses a join to pull data from the other tables.
If you DON'T have access to the schema, it may still be possible using IN (). Without having a clearer understanding of the schema my suggestion is to use join queries while passing that array to IN. That being said, I'm not sure it could work that way as I'm not sure you can construct the join in this fashion (hence the multiple tables and not using an array field).
Now with a stored procedure, the answer is a definite "yes, you can".
You would loop through each stuff-id, split out the array values (or pass them directly/indirectly with IN), loop through the child records, and flatten it out into a single record per child. With stored procedures you have quite a bit of control over each record you "suspend" (old Firebird dude here) with 'Returns Sets'.
To sort by score, you would achieve this by sorting the output of your stored procedure.
Don't give up either. Postgresql is really amazing in what you can do, and I recommend camping in their online manuals.