saving the widgets position after drag and drop

If each user is registered as a WordPress user (and thus exists in the users table), you can save user metadata on each reordering operation. You would communicate back to the server via Ajax (via admin-ajax.php, this also works for non-admin stuff). Serialize the current order to a JSON string, send it to the server to save it, and when the user visits again read this value and order the widgets according to it.