System on chip questions
Instead of "System on a Chip", think instead of "PCB on a Chip".

Consider if you wanted a system with an audio codec, a 1MB SRAM, a microcontroller, an Ethernet connection, a USB connection, an ADC, and a DAC.  Normally you would have to design a PCB for this, route all the connections, probably need six or eight layers (depending on size and stackup).

The SoC would just combine all those discrete chips into one monolithic "System" on a chip.  This simplifies board design, since you don't have to route all those connections on the PCB.  It also reduces component count (no need for series terminating resistors, probably fewer bypass caps, etc).  It also reduces component size, since one SoC will be physically smaller than the sum of individual chips.

Software runs on an SoC like pretty much anything else.  Software gets written and compiled to target the SoC's instruction set architecture, the compiled machine code gets loaded into memory, and the SoC does its fetch-decode-execute thing.