Edit-in-place on the grid whenever possible and never have an edit dialog. I can think of no advantage to having an “edit mode,” and it wastes users’ time and adds complexity to app (from the user’s perspective). Having an edit dialog makes it harder to learn the app than edit-in-place because the user has to learn two windows and how to navigate between them.
As experience with Excel, Access, and other desktop apps reveal, users do not have a problem editing a grid any more than editing anything else. You shouldn’t have a problem, especially if make your grid look like an Excel worksheet or Access table or form, and not like your typical “Click here to update” web app.
I think the tendency of some developers to make read-only grids is a holdover from the early web app days when there were no editable grids or no grids at all --there were html tables and any editing required a form. I see no excuse for edit mode with today's technology.
As for validation, inform the user of any validation error when focus leaves the cell, but do not use modal error indications (marking the field with color is one way to do this, but not on the only way). Let the user correct it whenever one wants, perhaps by fixing other fields. This solves the dependent validation problem.
If it can be done asynchronously or in less than half a second, consider automatically posting record changes with the loss of focus on the cell or (alternatively) the row. This addresses the concurrency concern for multiple user apps, plus gives your users implicit save, another usability improvement web apps could use.
Direct manipulation has been a proven usability principle since GUIs were invented. Modes have long been recognize to present usability problems. It’s high time web apps caught up with a 1980s level of usability.
BTW, lots of explanatory in-window text (e.g., long labels and multiple messages) is an indication of a usability problem, not a solution.