Just a trivial example OneDrive contains hard coded paths for your onedrive folder in a .ini file in %localappdata%\Microsoft\OneDrive\settings\Personal. If the path says D:\Users\<users>\OneDrive but Windows is using C:\Users\<user>OneDrive because you restored a backup made prior to relocating folders then it will either not work or (if the folder still exists on D as well) it replicate the wrong things.
So you could certainly restore back an image of C (from when you had user folders on C) and it will work as your C drive would be consistent - everything would be on C drive as it was before. Everything on D (including appdata) would remain on disk but not be used. If you then moved appdata from D to C (to save downloading your emails again for example) it would almost certainly break.
If you have relocated user folders from C to D you can generally restore just C back to an image you made after you relocated and this works fine - I've done this dozens of times. It might not always work though - you could have data in Users folder for programs that don't exist on your backup (because you installed a program after making backup) or missing data (because you uninstalled a program after making the backup). Probably neither would matter - you'd just install or uninstall the program again.
Note it isn't just appdata - programs scatter information in My Documents, their own directories in User folder (I have .cisco, .metadata, .oracle_jre_usage, .vec, .virtualbox in root of my users folder) and who knows where else.
The only way to be 100% sure is to backup and restore both C and D in tandem so you have a consistent environment but like I said individually restoring an image of C (assuming the image was created after relocating users folder) has always worked for me.