makepercentrelay reads /etc/courier/esmtppercentrelay.dir and creates /etc/courier/esmtppercentrelay.dat which is a binary database file. The files /etc/courier/esmtppercentrelay and /etc/courier/esmtppercentrelay.dat specify a list of "percent-hack" domains. /etc/courier/esmtppercentrelay is a plain text file, containing one domain per line. Courier loads the contents of /etc/courier/esmtppercentrelay into memory, so if you have a lot of domains, you will want to use the binary database file. The makepercentrelay command reads /etc/courier/esmtppercentrelay.dir, which can be either a plain text file itself, or a directory containing plain text files. All files in the subdirectory are concatenated, and the binary database file is created from the result.
Courier can use both /etc/courier/esmtppercentrelay and /etc/courier/esmtppercentrelay.dat at the same time. Usually you would put a couple of your most frequent domains in /etc/courier/esmtppercentrelay, then put the rest in /etc/courier/esmtppercentrelay.dir, and use makepercentrelay to turn it into a database file.
"percent-hack" domains are a list of domains for which Courier accepts mail via ESMTP addressed as "local%percent.hack.domain@local.domain", where "percent.hack.domain" is a domain found in /etc/courier/esmtppercentrelay or /etc/courier/esmtppercentrelay.dat, and "local.domain" is any domain found in /etc/courier/locals. Courier removes the local domain, and rewrites the address as "local@percent.hack.domain", then attempts to deliver it.
The percent hack applies only to mail received via ESMTP. Courier does not check this list of domains if the message is received via any other way (such as by running /usr/bin/sendmail directly from the command line). "percent.hack.domain" would likely to be a domain that Courier knows how to handle via some other means. It might be an entry in /etc/courier/aliases, or an entry in /etc/courier/esmtproutes.