To start, attributes are named values that naturally exist on your objects, points, vertex, etc in your scene. They describe how Houdini sees those objects, vertex, etc on your geometry and creations. You can also create custom attributes to modify specific things you would like to control in your scene. They are sorta like mini-hidden minions that you can call out and do your bidding. They exist as vectors, int, strings, vector4, floats, etc in Houdini. You can view the Point and Primitive attributes in the Geometry Spreadsheet.
Some common per-existing ones we'll break down are:
P: This is a vector attribute. It is used to control the point position of models in the scene.
N: This is a vector attribute. It is used to control the normal direction in the scene.
pscale: This is a float attribute. It is used to control a few different things. Firstly, you can use it to control the sizes of particles and points. You can also use it to scale geometry. It will scale everything uniformly.
Width: This is a float attribute. This attribute sets the line width when you render your curves or lines. Works primarily on points.
Scale: This is a vector attribute. This one is related to pscale. Sorta like it's crazy cousin. Unlike pscale, it will scale everything in an nonuniform way along each axis.
piece: This is a int attribute. This one is incredibly useful if you ever are creating destruction sims, or collapsing sims for example. When the geometry gets broken up into parts it will create this piece attribute. You can set nodes to use these created pieces to make modifications to them. Such as setting a material on a particular piece.
id: This is a int attribute. This one can also be a bit hard to wrap your head around. But essentially, you can use the id to keep track of changing points in your scene. For example if you had scattered points on object, and needed certain points to disappear or reappear at a time. Particle DOPs use this attribute constantly.
v: This is a vector attribute. This is the velocity attribute. Mantra uses this attribute when it calculates motion blur. You can also use this attribute for controlling the velocity of your particles, objects, etc.
name: This is a string attribute. You can set this one on primitives, volumes, packed-prims, basically anything you need to name and find later.
-Now keep in mind these are not all the attributes in Houdini, but for me they are the ones I use the most frequently. We'll explore more later. You can activate these nodes by using most of the attribute nodes. Such as Attribute Randomize. Most of these attributes are also geometry attributes as well, so they are best applied onto geometry.
One of my favorite attributes that I enjoy playing with is the pscale. By randomizing this attribute you can have your particles/geo, etc start at a certain size and get bigger. Which I've particularly used in my underwater scenes for bubbles.