Is there any difference between bpy.path.basename and os.path.basename?
os.path.basename doesn't understand Blender's // prefix (denoting a path relative to the current blend file). bpy.path.basename does understand this. If your path is (or could be) a blend-file-relative path, use the bpy.path.* functions.

On Linux I don't see any difference either, don't have Windows handy at the moment to check there.