User Level Application can not interact with hardware. They can communicate by system call (ioctl, open, read and write etc) and Sysfs(sysfs is a virtual file system).
1 :- Your device is hwmom device. Your Driver is "tmp102". Driver Expose these three temp1_input, temp1_max_hyst and temp1_max sysfs entry for user-level application.
SENSOR_DEVICE_ATTR(temp1_input, S_IRUGO, tmp102_show_temp, NULL , 0);
SENSOR_DEVICE_ATTR(temp1_max_hyst, S_IWUSR | S_IRUGO, tmp102_show_temp, tmp102_set_temp, 1);
SENSOR_DEVICE_ATTR(temp1_max, S_IWUSR | S_IRUGO, tmp102_show_temp,
tmp102_set_temp, 2);
You can read /sys/class/hwmom/tmp102/temp1_input sysfs file.
you can read and write these two sysfs file /sys/class/hwmom/tmp102/temp1_max_hyst and sys/class/hwmom/tmp102/temp1_max.
2 :- The files in /dev are actual devices files which UDEV creates at run time.A device file is an interface for a device driver that appears in a file system as if it were an ordinary file. Your driver has expose some other device file. thermal_zone_of_sensor_register(hwmon_dev, 0,hwmon_dev, &tmp102_of_thermal_ops). You have /dev/hwmom_dev node.
User-Level application can't directly communicate any of i2c-device or hardware. Linux kernel has limitation. Application need driver as interface to controle any of device.