It's not required. I wouldn't even recommend doing the first method, since it's just redundant and adds complexity. The tilde means it's relative to the application root already - ResolveUrl
just changes it to be relative to the page or usercontrol you're calling it from. Either way, it will still be loaded.
The second way would be preferred as a best practice to help guard against relative structural changes to your project.
Even better would be to make the path string a resource or at least a constant to get rid of magic strings and avoid surprises altogether.