Get a cheap Obd2 Bluetooth reader and the Android torque app and pull codes.
No CEL doesn't mean that there are no codes.
Probably egr or crank/camsensor or a bad coil pack.
Pull (change) spark plugs and look at their condition
You are spot on with the CEL. It doesn't always come on when there is an issue.
Almost all vehicles on the road have condition codes stored in memory. It doesn't always mean there are problems though. It could be something as simple as the AC blend door did not actuate within the specified time. But you could take a 6 month old vehicle and find codes pulled by a diagnostic scanner.
But I still say to just replace the camshaft and crankshaft sensors. There is no need for a shop for the job, it's not hard at all. If you can replace plugs, you can do this.