When working with web forms, you need to have "Protected WithEvents" preceding the controls, well almost.
: You have to have this. This is what establishes the link between the instance of the control that is declared in the HTML (<asp:button...>) and the instance in the code-behind (Protected WithEvents cmdClickMe As System.Web.UI.WebControls.Button).
: This is not always
required. This is used to provide the linkup of the event handlers so that you can create a method and use "Handles cmdClickMe.Click" to wire in the event. If you have a control on a web form that does not require events (which is more likely than not for things like labels or text boxes) you can remove the "WithEvents" keyword. Usually, the things that need event wiring are buttons, radio buttons, checkboxes, selects (dropdownlist or listbox), etc. If you want to use a text box's OnChanged event, then you would need it.
Readability is one thing, optimization is another. If you have a lot of controls on a page, it would probably be a little faster if you don't have "WithEvents" on controls that don't need it. On a page by page basis, you probably wouldn't notice it but once the application is being used my many users at the same time, things will be faster.
Work smarter, not harder