If you want your workflow to be able to manipulate the field, then simply check the box during publishing that says "allow this field to be edited in SharePoint." That's what I do whenever I need my workflow to be able to edit a field in the form. It actually edits the field in SharePoint, which then syncs with the form the next time it's opened. If you can avoid changing the value with the workflow and instead use conditional rules in your submit buttons within the form, that would be best. This is how I typically do it for changing my workflow status...
As for the method you're using, it should work. I don't know why it's not. The key point is #2. What do you mean when you say "to the new SharePoint column for only that form data." How are you making a data connection that only goes to a form? You can't do that, so I don't know if that's the issue or what. All you can do is make a data connection to the library, and it will retrieve data for all items in the default view of the form library. Then, it's up to you to use filtering to retrieve only that field's value for the current form.
Don't do #3 - that is done by the data connection settings itself on the last page of the wizard where you check the box that says "automatically retrieve data." Don't do it twice with a form load rule.
For #4, instead of a form load rule, just set a default value on the field and set it like this:
DecimalField(fromSP) where Title(SP) equals strFilename(form)
Or, you can compare some other field that defines your form. To use the Title of the form, you'll need to use something like my technique in this blog:
InfoPath – Auto-Generating Filenames
If you use my technique, then you have unique filenames that allow for subsequent editing and don't rely on the user to type in a filename. You then know for sure that you have a piece of metadata that you can compare between the SP retrieve data connection and your form itself.