set grouping in code - at this point, only the user can perform grouping by dragging the column header to the group panel. We intend to expose programmatic control over more feature (like sorting as well), we simply haven't gotten to it. I created the following page where you can Follow its status: https://feedback.telerik.com/blazor/1432800-set-grouping-from-code.
hiding columns - in blazor this is done through conditional markup, you can see a similar example here: https://demos.telerik.com/blazor-ui/grid/columns. If setting programmatic grouping works per fields regardless of whether a column is visible for the field, would this suffice for you? Also, perhaps a future version will also have a column list in the column menu where the user may be able to toggle visibility of columns, like in the current Kendo and WebForms grids, but that's a feature that would get implemented further down the road once the suite is more mature and provides the more basic features that must come first.
On a side note - I see that the MVC grid you have uses nested models, which is something that is not supported at the moment with Blazor, so you may want to Follow its implementation (I've added your vote): https://feedback.telerik.com/blazor/1432615-support-for-nested-complex-models. For the time being you'd have to flatten the model (that is, perhaps to create a view model with the primitive types you need in the view).
The grid is only in display mode, so in Blazor, I am using the Template block and displaying the fields I need, which works fine. I was only concerned about programmatically grouping and being able to rename the grouping as I have done above. If we can do the grouping and rename the grouping headers all within the code, I would appreciate that.
I would still encourage you to review the rest of the information I provided because Blazor has some differences from MVC that I believe you would need to be aware of, migration is not a straight copy-paste path.