Dired move file breaks relative symlinks. Maybe we can call this a
bug. I find a workaround with this advice.  I use this to move files
(rel symlinks) around in a git-annex repo without brokening it.  I am
quite new to emacs, I am not sure if that has any side effect.

    (defun my-rename-file (file newname &optional ok-if-already-exists)
    "fix path for relative symlink"
    (if (file-symlink-p newname)
    (let ((target (expand-file-name (file-symlink-p newname) (file-name-directory file))))
          (if (and target (string-equal system-type "gnu/linux") (not (file-exists-p newname)))
              (dired-make-relative-symlink target newname t)))))
    (advice-add #'rename-file :after #'my-rename-file)

There are some complicated examples of dealing with symlink :
https://www.emacswiki.org/emacs/symlink-fix.el
I am not sure if windows has relative shortcuts. This link show you can use symlinks in windows:
https://github.com/sensorflo/sensorflo-emacs/blob/master/site-lisp/w32-symlinks.el