1, eg:
library ieee;
use ieee.std_logic_1164.all
In this example, std_logic_1164 is a package.
2, In functions, since it requires a return type, I don't know if there is some other ways to handle multi output problem. But what I can think of is to use a record type as output type. You can of course define as many outputs in the record type as you like.
3, I don't think it can be done since according to my memory, all the "after" statement will be removed during the synthesis.