no, the cookie will be automatically created if it doesn't exist but the user is logged in. During login dotnetnuke creates the portalroles cookie to store the user role(s) in it. This cookie has a lifetime of 1 minute, ensuring it never get's too stale. The existance of the cookie is checked for on each page refresh and it's repopulated automatically if the user is still logged in. The redirect is necessary as you need a new page request to be processed.
I've just realised that you probably need to ensure the user values aren't also in cache currently and remove them if necessary e.g.
Dim objUser As UserInfo = UserController.GetCachedUser(_portalSettings.PortalId, Context.User.Identity.Name)
'Remove user from cache
If objUser IsNot Nothing Then
DataCache.ClearUserCache(_portalSettings.PortalId, Context.User.Identity.Name)
End If
' Redirect browser back to home page
Response.Redirect(Request.RawUrl, True)
Exit Sub