How to store value of checkboxes without predefining them in the SproutForm plugin
I don't feel I fully understand how you will be using the data on the back end, but here are some ideas.

It sounds like the best way to solve this problem would be to build a custom field-type plugin that stored checkbox data in the way that you need it to be stored on the back end.

A simpler workaround may be to use a multi-line Plain Text field as your "checkbox" field.  You could display things however you want to the users on the front-end, and submit the checkbox data behind the scenes in a way that stores the data in that field in a readable way.  While the data may not behave like a checklist, you would get a snapshot of the checklist items for each submission and the length of items could vary.

To capture the User ID and To-do List ID, you might be able to use the Sprout Hidden Field or Sprout Invisible Field which would just store those IDs in a plain text field.

If you wish to store the ID as relational data, you'll need to create the appropriate relational field (such as a Users Relations field) and submit the ID as an array:

&lt;input type="hidden" name="fields[usersFieldHandle][]" value="{{ currentUser.id }}"&gt;

Additional examples of inputs to submit data from the front-end can be found in the Craft Field Guide