In the end, I found the use of collection variables to solve my specific problem proved too complex and quite confusing, particularly when laying in the use of indices. Instead, I leveraged a combination of approaches found within existing documents or blogs to meet the need. One thing that's clearly needed is a more fundamental guide to the use of collection variables and using an index, but I'll save that conversation for later.
The Problem Statement
Be able to track one or multiple changes to a set of separate fields of different types within a single list item as the item is modified.
How This Was Resolved
1. Create the hidden fields that hold the original values so that change comparisons can be made, as mentioned by Dan in the first part of this thread.
2. Set the workflow start condition to meet your specific situation and conditions.
3. In the order most appropriate for your list item or needs, start your workflow with 'Set a condition' to compare a specific field to the copy (original) version of that field. If they're different, add the appropriate actions to that condition. I:
4. Repeat (3) for each field to monitor. Because you're adding to the string with each iteration, you can re-use the before and after variable.
5. Now, there was one field that intentionally starts blank and then gets updated when an attorney is assigned to the work. Because notifications and a task are already sent when that attorney is to be and is assigned, it's unnecessary to take any actions or send any noticies unless other changes are also made. Hence the use of the counter.
6. After running through each of the field comparisons, use a 'Run if' to determine the change counter is > 0 whether anything (after checking whether it was only an attorney assignment as described in 5 above.
One concern I had with using collection variables was with simplicity. They are not easy to explain to people without a programming background, and meaningful ("late beginners") documentation and training material is in short supply. It's either too basic or too complicated, such as showing their use with web services or SQL queries. I got the coll vars to populate but never did crack the code on how to extract the data afterwards.
While there may be more efficient methods to solve this problem, I find my approach is easy to reconstruct, explain, and maintain.