It's not necessarily a big deal in small applications that aren't really going to go anywhere, such as you build when you're a beginner. When you start building commercial applications that may be around for a while though, you want to avoid tight coupling between types such as the code you're using creates. Your code means that Form1 will only work with Form2 and Form2 will only work with Form1, which means that the two are tightly coupled, i.e. they each depend absolutely on the other. By doing things the way I suggested, Form2 is decoupled from Form1, i.e. Form2 has no specific reliance on Form1.
Advantages of that include the fact that you can then use Form2 in more than one place in your application to provide the same or similar functionality. In your code, Form2 can only be used to update a specific TextBox in Form1. With my code, Form2 could be used to update any control in any form, or maybe some other data that is not even related to a control. You gain much greater flexibility with basically no extra effort. Even if you don't think you need that flexibility now, you may do at some time in the future and, if you allow for it now, you don't have to then make changes to both Form1 and Form2 in the future to get. Also, if you decide that you want to change how Form1 works in the future, a tightly coupled Form2 means the likelihood of having to change Form2 also is high. A decoupled Form2 means that it is unlikely to have to change because of a change to Form1.
Generally speaking, knowledge of hierarchy should flow one way only. In this case, Form1 has to have knowledge of Form2 because it needs to create an instance and display it, but there's no need for Form2 to know anything about Form1. There are times that two-way awareness is required but, even in those cases, the awareness in the upstream direction should be generalised. For instance, a control has a Parent property that contains a reference to its parent control. That means that the parent is aware of its children and children are aware of their parent. All the children know is that their parent is a control though, which makes sense because controls are designed to exist within other controls. They are not coupled to any one particular type of control though, so it is very loose coupling. Basically, the child in any hierarchical relationship should have no awareness of its parent, e.g. array elements have no awareness of the array, unless they specifically need to and then the coupling should still be as loose as possible while still providing the required functionality.