I’m not sure I’d try to use a formset here - I guess it’s do-able, but I’m not sure the UX is what you’d be looking for.
This is a case where I think I’d try to find a JavaScript-based grid tool - perhaps something like the jQuery Datatables module with the Editor plugin.
As far as getting the titles on each line, that’s actually pretty easy. See my comment here - Forms fields based on database content - #3 by logikonabstractions, and the pages linked from it. (Briefly, there’s a formset function, get_form_kwargs, that supplies the index of each form as it’s being built, allowing you to customize the form based upon the instance of the form.)