If I understand your question correctly, you don't actually want a text field on the product itself - you want every customer purchasing a particular product to be able to enter some custom text associated with their purchase. We facilitate this in Drupal Commerce through line item fields.
In the store configuration menu, you have access to all the line item types on your site and can add fields to them that are exposed to the customer on the Add to Cart form. Customers can then supply a text value that gets stored via the Field API on your line item, and you can edit your Views in the shopping cart / order interfaces to display the contents of that field.
Note that adding a field to the "Product" line item type will make that field visible on every Add to Cart form. If you only need this field on some products' Add to Cart forms but not all, then you can use the Commerce Customizable Products module to create additional product line item types and use different product display node types to generate Add to Cart forms using the different line item types.
I don't have time to write-up a full tutorial in this answer, but those steps outline the process. We have videos that are instructive but don't necessarily cover the exact material. Search the video library for our demonstration of using a line item field to allow custom donation amounts. It's conceptually similar and uses a line item field in the solution.