difference between device file and device driver

One of the primary abstractions in Unix is the file (source):

Programs, services, texts, images, and so forth, are all files. Input and output devices, and generally all devices, are considered to be files, according to the system.

This lets users treat a variety of entities with a uniform set of operations, even through the implementation of those operations may be wildly different.

As you were getting at with your question, device files are the user facing side of the abstraction. This is what the user sees; a file that they can write to, read from, open, close, etc. The device drivers are the implementation of those operations.

So the user will make a call to a file operation such as write, and then the kernel will then use the device driver to carry out the operation.