Confused with naming attributes

The point of the attribute precedence system is to allow you (or an upstream cookbook author) to set sensible defaults for data that the end-user can override as needed. For example, a generic cookbook for a web server might configure the server listen on port 8000 so it doesn't need root, but you could set it to port 80 for a production scenario.

Whenever you set a value for an attribute, you are required to do something to specify the precedence level you want to write to, because Chef can't guess this on your behalf. 99% of the time, when you read the value, you want the highest precedence one.

So:

Basically yes. You can read from specific values but there's almost never a reason you'd want to.

There's a wrinkle here that, in an attributes file, the node part is implicit (you can still use it if you want, but it's not idiomatic). In a recipe, the syntax you've given is correct. But note that mostly you want to set default level values. Also, Ruby doesn't allow hyphens in method names, the correct name is force_default.