I have bunch of arrayed chainsaw blades which I animated it by making it follow a curve, but when I apply the curve modifier the blades doesn't follow the curve anymore. Is there a way to apply the animation and be able to apply the curve modifier freely?
Mesh modifiers modifies the mesh. When you apply the modifier, it essentially bakes the modifier's effect as it is in the current frame into the mesh.
Aside from the Armature modifier whose armature keyframes can be read and exported anywhere, most other modifiers don't really have a way to store animation as is.
However, you can export your mesh as an Alembic file. Alembics have the possibility to essentially take snapshots of your mesh on each frame withing a range and store them.
It's the industry standard exchange format, anytime you see meshes deformed by physics simulation in a movie: it's most likely an alembic export of the actual simulation.