How can /proc/sys values be changed at boot (sysctl.conf does this on normal Linuxes)? How can /proc/sys values be changed at boot?

sysctl.conf doesn't exist on Android and echoing values to the proc files isn't persistent.
Use init's write command in /init.rc or any other .rc file. You may also create your own:

# /system/etc/init/custom.rc

on property:sys.boot_completed=1
    write /proc/sys/kernel/hostname MyDroid


Set permissions and reboot device.

~# chown 0.0 /system/etc/init/custom.rc
~# chmod 0644 /system/etc/init/custom.rc
~# chcon u:object_r:system_file:s0 /system/etc/init/custom.rc


You may also use some early trigger like on init or on boot but your value may get overwritten by some later trigger.

Also some values aren't allowed by SELinux to be written by init. E.g. /proc/sys/vm/drop_caches and /proc/sys/vm/dirty_ratio are writable only by vold. In this case you can use  exec command which allows changing SELinux label before command execution.

# /data/sysctl.conf

kernel.hostname=MyDroid
vm.dirty_ratio=20


# /system/etc/init/custom.rc

on property:sys.boot_completed=1
    exec u:r:magisk:s0 -- /system/bin/sysctl -p /data/sysctl.conf


* sysctl is toybox applet. Or you may use busybox.

For other options see this answer. Some apps may also provide similar functionality but I never used one.