What's the difference between an export and imp?

You should check out How TLM Works | Advanced UVM | UVM/OVM Verification Methodology | Verification Academy

Basically, both exports and imps provide the implementations of whatever methods your TLM port requires. The difference is an export is an indirect connection to an implementation. It it normally used when when there is component hierarchy involved. A port of a scoreboard may connect to an export of an agent. However, you do not need to know of the agent is the actual imp of the TLM method, or if it is just exporting an imp from a lower level component.