What is the difference between a node and a machine on OpenShift? OpenShift 4.2 documentation defines:


  Machines
  
  A fundamental unit that describes the host for a Node. A machine has a providerSpec, which describes the types of compute nodes that
  are offered for different cloud platforms. For example, a machine type
  for a worker node on Amazon Web Services (AWS) might define a specific
  machine type and required metadata.


https://docs.openshift.com/container-platform/4.1/machine_management/creating-machineset.html

While Kubernetes doc defines:


  Nodes
  
  A node is a worker machine in Kubernetes, previously known as a
  minion. A node may be a VM or physical machine, depending on the
  cluster. Each node contains the services necessary to run pods and is
  managed by the master components. The services on a node include the
  container runtime, kubelet and kube-proxy. See The Kubernetes Node
  section in the architecture design doc for more details.


https://kubernetes.io/docs/concepts/architecture/nodes/

I don't know whether Kubernetes has the concept of machines, and I can't find on OpenShift's documentation its own definition of node (perhaps it uses Kubernetes'?)

And I can't get what's the difference between them.  My current understanding is that a machine represents a raw physical or virtual machine; just the computational resources like cpu, memory and storage.  Nodes, then, would represent a machine that is configured for using with OpenShift, that is, a machine that contains the services necessary to run pods and is managed by the master components.

Another theory would be that machines are just an abstraction to the existing infrastructure, so that persistent labels can be assigned to them for organizing the infrastructure, and as a way to provide information on the underlying infrastructure properties for the nodes.

So...  What is really the difference between nodes and machines?  Is a node in OpenShift exactly the same thing as in Kubernetes?
Your interpretation is correct:


  My current understanding is that a machine represents a raw physical or virtual machine; just the computational resources like cpu, memory and storage. Nodes, then, would represent a machine that is configured for using with OpenShift, that is, a machine that contains the services necessary to run pods and is managed by the master components.


The differences arise on the level of abstraction.


A Node in OpenShift is exactly the same thing as a Kubernetes node. It refers to the abstraction of a worker/master "Node" in a "Cluster". The Node abstraction only exists within the boundaries of a running cluster.
A Machine is an abstraction introduced by the Cluster API which is an ongoing effort to allow deploying K8S clusters using a declarative approach. OpenShift is currently adopting the Cluster API hence they expect you to define the host infrastructure required to run your Nodes using the Machine spec.