How to a create a slate roof tile with rough edges?
I would solve the problem with microdisplacement.  I think you're in the ballpark.
My model is a cube that I scaled down on the Z axis and gave some loop cuts to.

Then I grabbed the top and bottom outer edge (in edge select mode) and beveled with a couple divisions.

And that's it, slap some adaptive subdivision on there and head to the node editor.  Set your object's material to Displacement and Bump.

In the shader editor, you can use a Vector Math node to multiply the object coordinates by itself a couple of times and then run that output through a Gradient Texture set to Spherical to generate this interesting output.

You can use a Color Ramp here to define the cutoff between the jagged edge and the smooth plane.  For whatever reason I used an Invert node here, but you can just flip the Color Ramp around.

This is the scale input of your Displacement node.  Multiply it by a value that makes sense(0.04?), plug it in, and put all of this aside except for the Displacement node.

Now grab some fresh coordinates and start with a Voronoi texture as you first suspected.  I've used a Mapping node to squish it on the Z axis which I think is more accurate to the reference.  If you plug this into the height input, and plug the Displacement node into the Material Output we get immediate results because we've already set up our scale.

With some adjustment to the Color Ramp from before, the scale of the texture, and the Midlevel of the Displacement node, maybe this is enough for what you need.
The thing to know to actually use this is that since we're using Object Coordinates if you need to scale the object and Apply Scale, you have to go into the shader editor and make an inverse change to the Mapping nodes.  This is kind of an annoyance and a failing on my end because I gave up on making this work with generated coordinates.
For example, if you've scaled this model on the X axis, you also need to decrease the scale of the X axis on the bottom Mapping node.  Here's a view of how our change in the Mapping node is represented in rendered view.  (This does get fiddly and again I apologize.)


You can, of course, go much further than this.
...And I have...
Around here you start getting some good results.

Just kidding, here's the blend file.

This is what this crazy graph looks like set to Bump Only.

And here's a showcase with displacement and RTX ON.

Every instance of the object is slightly different.

Microtexture in the Bump layer.