In your CSV file your header is called :ID
and :START_ID
, and in your cypher you're referring to it as csvLine.id
and csvLine.conceptID
which don't exist in your input CSV. So they are null. So you get blank nodes. ;)
You need instead to do something like this:
LOAD CSV WITH HEADERS FROM "file:///nodes.csv" AS csvLine fieldterminator '|'
CREATE (c:Concept {id: toInteger(csvLine.`:ID`), name:csvLine.`concept:string`})
In other words, match up your column metadata. Notice the backticks I'm using around the column names, this is so that you can include characters like : in a property name in Neo4j.