Yes, this is "safe". This is dealt with at a very low level, the file system driver. A file on common file systems like FAT or NTFS has two distinct structures on disk. First is the directory entry, it stores metadata about the file. Like the name, timestamps, attributes and length. The actual file data is stored elsewhere, a chain of clusters that stores the file data.
FileInfo exclusively gives you the metadata for a file. The file data is much more sensitive, highly subject to change as a process writes to the file. Notable is that you can lock access to the file data with the FileShare options. But there's no way to lock the metadata. Accordingly you can always get the FileInfo for a file, regardless what another process is doing with the file.
Of course, the actual FileInfo properties are subject to change while a process writes to the file. They are updated lazily, particularly the LastAccessTime property. If you want to be sure that you've got accurate info that cannot change then you need to obtain a lock on the file. Do so by opening the file with FileShare.Read or FileShare.None. Which ensures that no other process can open the file for writing, as long as you have the file opened. Do note that that can easily throw an IOException, you'll only gain the lock when no other process came before you and opened the file for writing.