Just to get this straight: was your expectation that WebGL will run the project at the same quality and framerate, or only slightly below that?
If so, some head-straightsetting is in order. 
WebGL rendering is simply put on the same level as mobile tech from 10 years ago. WebGL v2 is effectively OpenGL ES 3.0 from a rendering features perspective. If you’re not using at least Unity 2022 the renderer will even default to WebGL v1 which is effectively OpenGL ES 2.0 so you can expect the fidelity of the first iPhone or iPhone 3G.
The graphics API has multiple layers which makes it run far less efficiently than a native app (WebGPU aims to resolve this but won’t be production ready for a couple more years).
And you only get singlethreading on WebGL for the time being. C++ native multithreading is available as an experimental package though not recommended at this point.
Depends on what you do but yes, if you instantiate objects with MeshColliders on them, I would not be surprised if this dips the framerate quite a bit for a short period. MeshColliders are pretty expensive to initialize on the Web, probably due to singlethreading. Try enabling baking of colliders in Player Settings / Other / Optimization (pretty close to the bottom).
Or approximate MeshColliders with primitive colliders. Primarily the MeshColliders get created and never thought of because meshes default to adding these - and you rarely see them being a problem on desktop systems because they’re fast enough for most uses. Not so on the Web or mobile.
Most likely memory related. Monitor memory usage with Memory Profiler and the free asset Graphy. The Firefox debugging tools are also quite helpful.
You have a total limit of 2GB for the entire browser tab which shares the memory with HTML, Javascript and so on - not just your app. It’s best to stay quite a bit below that limit. For mobile the limit is typically less than 500 MB on iOS and a bit more on Android.
If a crash occurs in “heavy processing” then check that very process. It may be generating too much temporary garbage, possibly upwards of hundreds of megabytes which might be avoidable either by forcing a frequent GC.Collect() run or by optimizing the code to produce less garbage (ie excessive string concat).
To cut down on memory most effectively and most easily you’d have to reduce the texture size. In Build setting you can force a max size, you can also set the mipmap limit (not sure, i think quality or player settings) to force the web build to only include mip levels 1 or lower.
That said: Profile! 
Use Unity and Firefox Profilers.