Have you actually developed a proper project in Meteor? It sounds like you may not have.
You’re talking about big, complicated things. Meteor is all about keeping things as simple as possible, by building higher-level abstractions that take care of all the complex stuff. But it’s still about starting from a simple base and then increasingly fleshing things out.
You don’t sound like you have a very specific use case in mind, that’s why your thinking is too complicated. (Just my observation, and no value judgment intended!)
Start implementing the simplest possible thing that could work for your use case, and then take it from there. The path to how to adequately express more complex relationships will become quite obvious as you go.
There’s nothing super special about Meteor in that sense, you have all the power of Nodejs, MongoDB and browser-based JS libs at your disposal. You can do anything with Meteor that you can do with those technologies (and beyond). Just try to keep things simple, that’s an important value in Meteor-land, if I may observe and speak it that way.
Complex thinking without specific application is usually not useful. If you do have a specific use case, then express it and more specific answers might come.
For instance, what do you mean by “validation rules directly in entities”? What we do in Meteor is define a data model through a “schema” (the package is called “simple-schema”), and that also defines the validations and gives you ways to hook into validation.
“events” is a broad topic, so you’d need to narrow that down to what you mean specifically. There are packages that let you know when items have been added/changed/deleted in (mongo) collections, for example (search atmosphere for collection-hooks or so, not sure about exact package names).
“thin and abstract controllers” – Meteor doesn’t really do MVC/MVVM etc. We usually use a router like iron:router or flowrouter and build things with Blaze Templates. Some of us do angular, though I’m not sure how routing works in that case. Angular has its own “controller”-ish things, as I understand (not using it, personally). Some of us use React, and again here I’m not sure how routing works exactly.
For Angular there’s a page dedicated to the whole topic here: http://angular-meteor.com/
I really suggest you start building what you’re thinking about. You’ll find that things are really easy with Meteor, but you’ll have to adjust your thinking – simplify it, basically. Over here we don’t really call things “entities” (things are just objects, meaning plain JS objects/“maps” and arrays), we don’t talk about “thin” (we like simplicity in everything, so nothing is “fatter” than required), there is no meaning we assign to “abstract”, really (we do generalize concepts and create packages from them, but calling these things “abstract” would seem to subtract from the idea that everything ought to be as practical and pragmatic as possible); we don’t really talk about “views” (though the angularjs integration may, I don’t know? we have “templates” here and “helpers” which together define a data model and the (html) output generated from that).
Things are intentionally simple around here, including no-bullshit terminology, no overcomplicating things. Meteor and our packages handle the complexity so that in “userland” (user code) we can keep things very simple and easy to understand and fun to program and to maintain.
(EDIT: Sorry for what may seem like a bit of a rant. Just felt like clarifying (some of) the idea of Meteor and its ecosystem a bit, since it felt like you’re a bit of a newcomer, not familiar yet with the ideas and values of the Meteor community!)