I'm trying to understand what, exactly, lookup tables are. It seems like getwatchlist just populates Splunk like any other data import by outputting csv formatted data into Splunk. I didn't see anything in the code that mentioned lookup tables or even indexes.
So, the command is run, data changed to csv, and sent to Splunk. That's where I get a bit confused. What makes it a lookup table? Looking at the source, there is no transforms.conf, so I'm not even sure how the lookup table name is set. It would seem to be the Profile Name from the getwatchlists.conf.
Lookups can also be stored in the KVStore now a days. These aren't static on disk, per say, as csv lookups. However, they function in a near similar manner, but depending on your lookups, it can be better for performance (large lookups, better performance.)
Lookup tables are static table, in CSV format, which enrich your search results by matching field(s) from your search results and adding corresponding fields from the lookup table. They are available in lookups folder under your app or under etc/system. They don't required any .conf entry. More details here.