Ahhh! I wasn't aware that the Custom Attributes are virtual. This is wonderful! It WILL work for one of the exports I need to do, I have several.
CSV is what we'll be using, but only one CSV should be generated by a scheduled task which runs with the domain or business unit as its activity scope. We will have various scheduled tasks running daily, but each will produce a separate file (Task1...csv1, Task2...csv2, etc).
For another of the exports, what I can do to achieve the results I want is, as part of the processing for the data about which I want to capture changes, I'll assign a custom attribute as the container for a flag so that whenever Field A is modified, I also set a flag in the custom attribute field (I'll abbreviate as 'CA_a') as well. Then I would query for that flag and if the flag is set, export the attributes. I would just need to clear the flag after exporting it so it wouldn't export thereafter.
Another one is a little more involved. If Field B is modified, then custom attribute B (I'll abbreviate as 'CA_b') has a modification timestamp noting when Field B was modified. This scheduled task should query all Users who've been modified since last run or within a specified timeframe - last 24 hours or, say, last 2 days. For each result if CA_b's timestamp is within range of specified timeframe (see bold above), export the selected attributes to the CSV.
So here's what should happen...when it runs on day 1, if CA_b for Users 1, 2 & 4 is timestamped, the CSV will contain the select attributes for the three Users. If on day 2 the query finds Users 2, 5 & 7 have been modified but only the timestamp in CA_b for Users 5 & 6 is within the specified time range, the CSV will contain the select attributes for Users 5 & 6 (not 2).
Hope that helps clarify what I'm trying to accomplish.