As you discovered, you can't just copy datafiles. There are dependencies between individual table files, and the central ibdata1, and the ib_log files. There's also some data in RAM in your MySQL Server process. They must be synchronized, or you will only copy corrupted data.
The only way to safely copy the files is to shut down the MySQL Server service, so all changes to those files are stopped while you are copying them. Obviously, this is worse than making the database slow — it is completely unavailable to applications while it is shut down.
This is why backup tools exist, to copy data safely and get a consistent snapshot of data as of a given moment in time.
You can use mysqldump --single-transaction which should get a consistent view of data as of the moment it started the dump, without locking the database or slowing it down (no more than one extra thread running SELECT * FROM <tablename>...
). This works only if all your tables are InnoDB, so they support transactions. And you must not use any CREATE, ALTER, DROP, RENAME, TRUNCATE, or GRANT/REVOKE commands while running the mysqldump.
Another answer suggested using Percona XtraBackup, but that software does not provide a download for Windows. The closest option is to run XtraBackup in a Docker container on Windows (this is experimental and not a recommended solution for a novice).
Another option that many people use is to set up a replica MySQL instance with MySQL Replication, and use it as the source for backups. Then if the backup slows down the replica instance, that doesn't impact your applications that use the master instance.