"raytracing" is quite an overloaded term these days unfortunately, but conventionally:
"raycasting" is sending a virtual ray out from a start position to find the next solid surface (ignoring volumes/volumestacks for the moment). (Occlusion/shadow rays can just check for occlusion without finding the closest intersection).
"raytracing" is doing multiple series of "raycasting" events, either in "traditional" Whitted raytracing where you bounce off reflections and through transparent materials recursively, or using BSDFs for outgoing directions in pathtracing for integration. Essentially after one "raycast" event, you do something with the result, and then based off that result, you do another "raycast" even to find the next "intersection" in the scene, starting from the new position you just found.
"raymarching" sort of depends whether you're doing Signed Distant Field intersection or volumetric integration, but to an approximate description, you're basically repeatedly running the intersection test ("raycasting") from multiple "virtual" 3D positions in scene space to evaluate the presence of something which can not necessarily be exactly evaluated with a single intersection: i.e. a fractal's limit surface, or a heterogeneous (different values per voxel) volume.
"raycasting" is sending a virtual ray out from a start position to find the next solid surface (ignoring volumes/volumestacks for the moment). (Occlusion/shadow rays can just check for occlusion without finding the closest intersection).
"raytracing" is doing multiple series of "raycasting" events, either in "traditional" Whitted raytracing where you bounce off reflections and through transparent materials recursively, or using BSDFs for outgoing directions in pathtracing for integration. Essentially after one "raycast" event, you do something with the result, and then based off that result, you do another "raycast" even to find the next "intersection" in the scene, starting from the new position you just found.
"raymarching" sort of depends whether you're doing Signed Distant Field intersection or volumetric integration, but to an approximate description, you're basically repeatedly running the intersection test ("raycasting") from multiple "virtual" 3D positions in scene space to evaluate the presence of something which can not necessarily be exactly evaluated with a single intersection: i.e. a fractal's limit surface, or a heterogeneous (different values per voxel) volume.