VB.NET Sub New vs Form_Load
The problem
It is very common in VB.NET to need to initialize variables and controls when a form is shown. There are 2 main ways to achieve this which are using the Form_Load event handler or using the Sub New constructor of the form. The problem is which one do you choose out of the 2 because they seem so similar.
Form_Load
Most beginners learn about using Form_Load when they first start learning VB.NET because it is the easiest way to explain how to initialize things on your form. This means that it is better in most cases to use it because everyone knows about it.
The Form_Load method happens after the InitializeComponent method is called which means that all the controls on the form have been added and initialized when you use Form_Load. With Sub New you have to make sure that you manually call InitializeComponent and why do that when you can just use Form_Load and avoid the problem completely.
The Form_Load method also has the advantage of having the DesignMode variable set to the proper value. If you use Sub New you might end up coding something that is only meant for design mode but ends up being run all the time without any explanation.
Sub New
The advantage of Sub New is that it is run before InitializeComponent is run which means that if you want to do something before all the controls are added to the form and initialized then you will want to use Sub New. One example of this is when you want to check if a form is allowed to be opened then it is better to do the check before all the controls are loaded because it is just a waste to load controls when you are not going to use them.
Something related to the above point is that with Sub New you have complete control over when InitializeComponent must happen so it means you have more power of what is going on.
Sub New is a constructor which means you can also overload it. You will obviously have to use Sub New instead of Form_Load if your form relies on an overloaded constructor.
Final Recommendation
It's best to use Form_Load most of the time unless you have a specific reason for using Sub New like when you need more control over what is going on when the form loads.